Aktuelle Zeitmarken (Timestamps) laden

Der Loader kann Werte mit einem Zeitmarkendatentyp, der auf dem Ablesen einer Uhr beruht, in Spalten einfügen. Beispielsweise können das Startdatum und Enddatum eines Angebots in WebSphere Commerce über Werte verfügen, die auf der Uhrzeit basieren, zu der das Angebot in die Tabelle eingefügt wurde. Zur Unterstützung dieser Funktionalität verwendet das Loader-Paket die Tabelle MLTIME zur Aufbewahrung der Zeitmarkenexemplare. Diese Tabelle verfügt über das folgende Schema:

  table MLTIME
    ( 
    INSTANCEID BIGINT not null,
    MLTIMESTAMP TIMESTAMP
    )

Sie können den Namen der Tabelle und deren Spalten durch Ändern der property-Eigenschaftsdatei zur Loader-Anpassung. Sie können dies durch Ausführen der folgenden Schritte erreichen:

  1. Erstellen Sie eine neue property-Eigenschaftsdatei zur Loader-Anpassung.

    Windows NT Windows 2000 AIX Solaris Linux MassLoadCustomizer.properties befindet sich im Archiv MassLoader.zip. Extrahieren Sie diese Datei, aber behalten Sie die Erweiterung .properties bei, und stellen Sie die Datei in ein Verzeichnis, das sich im Klassenpfad befindet.

  2. Wichtig: Entfernen oder ändern Sie die vorhandene Datei MassLoadCustomizer.properties nicht.

    iSeries ISeries_LODWCSDTA_Customizer.properties befindet sich im Verzeichnis /QIBM/ProdData/WebCommerce/properties. Kopieren Sie diese Datei in das Verzeichnis /instroot/xml, benennen Sie die neue Datei um, behalten Sie jedoch die Erweiterung .properties bei, nehmen Sie anschließend die erforderlichen Änderungen in der neuen Datei vor.Wichtig: Entfernen oder ändern Sie die ursprüngliche Datei ISeries_LODWCSDTA_Customizer.properties nicht.

  3. Ändern Sie die Werte der in der neuen property-Eigenschaftsdatei zur Loader-Anpassung angegebenen Eigenschaften.
  4. Geben Sie den neuen Dateinamen als den Wert des angepassten Parameters für den Befehl 'Load' an.

Der Name der Tabelle und deren Spalten können durch Ändern der folgenden Eigenschaften in der property-Eigenschaftsdatei zur Loader-Anpassung:

  TimestampTableName = MLTIME
  TimestampIdColumn = INSTANCEID
  TimestampValueColumn = MLTIMESTAMP

Die Eingabedaten zur Angabe aktueller Zeitmarkenwerte basieren auf Zeichenfolgemustern für Zeitmarken. Die folgenden Masken werden zur Angabe der Zeitdauer für die Zeitmarke verwendet:

  %D für Tage
  %M für Monate
  %Y für Jahre
  %H für Stunden
  %m für Minuten
  %s für Sekunden 

Sie können das Format für aktuelle Zeitmarken anpassen, indem Sie Masken in der property-Eigenschaftsdatei zur Loader-Anpassung ändern oder hinzufügen. Die folgenden Eingabemasken stehen zur Verfügung:

  InputCurrentTimestampFormat.1 = CURRENT TIMESTAMP
  InputCurrentTimestampFormat.2 = CURRENT TIMESTAMP %D DAYS
  InputCurrentTimestampFormat.3 = CURRENT TIMESTAMP %D DAYS %M MONTHS
  InputCurrentTimestampFormat.4 = CURRENT TIMESTAMP %D DAYS %M MONTHS %Y YEARS
  InputCurrentTimestampFormat.5 = CURRENT TIMESTAMP %Y YEARS %M MONTHS %D DAYS
  InputCurrentTimestampFormat.6 = SYSDATE
  InputCurrentTimestampFormat.7 = ADDDAYS(SYSDATE,%D)
  InputCurrentTimestampFormat.8 = ADDDAYS(ADDMONTHS(SYSDATE,%M),%D) 
  InputCurrentTimestampFormat.9 = ADDDAYS(ADDMONTHS(ADDYEARS(SYSDATE,%Y),%M),%D)

Eingabedaten für die aktuelle Zeitmarke werden mit dem angegebenen Muster abgeglichen. Wenn die Daten mit einem angegebenen Eingabemuster übereinstimmen, wird dieses Muster verwendet, um eine Syntaxanalyse der Eingabedaten durchzuführen, und der Loader konvertiert die Daten in das entsprechende Ausgabeformat, bevor sie in die Datenbank eingefügt werden. Neue Muster können zu der oben aufgeführten Liste hinzugefügt werden, sofern die Indexnummern in Reihenfolge geordnet sind.

Es gibt zwei Zielausgabeformate zum Angeben aktueller Zeitmarken:

  1. CurrentTimestampFormat.Load wird verwendet, wenn der Loader im Lade- oder Importmodus ausgeführt wird.
  2. CurrentTimestampFormat.JDBC wird verwendet, wenn der Loader JDBC zum Einfügen, Aktualisieren oder Löschen von Werten in der Datenbank verwendet.

Die folgenden Standardzielmuster stehen im Loader zur Verfügung:

  CurrentTimestampFormat.Load = CURRENT TIMESTAMP %Y YEARS %M MONTHS %D DAYS 
    %h HOURS %m MINUTES %s SECONDS 
  CurrentTimestampFormat.JDBC = CURRENT TIMESTAMP %Y YEARS %M MONTHS %D DAYS
    %h HOURS %m MINUTES %s SECONDS

Die Eigenschaften für diese Muster können auch in der property-Eigenschaftsdatei zur Loader-Anpassung angepasst werden. Beim Anpassen der Eigenschaften 'CurrentTimestampFormat.Load' und 'CurrentTimestampFormat.JDBC' sollten Sie sich vergewissern, dass die Syntax der resultierenden Anweisung für das vorgegebene Datenbankverwaltungssystem gültig ist.

Die Eigenschaft CurrentTimestampLiteral wird vom Loader verwendet, um frühzeitig festzustellen, ob der Wert für eine Zeitmarkenspalte im aktuellen Zeitmarkenformat vorliegt. Hierdurch können kostspielige Berechnungen zur Feststellung, dass der Wert keine Zeichenfolgedarstellung der Zeitmarke ist, vermieden werden.

  CurrentTimestampLiteral = CURRENT TIMESTAMP 

DB2 Der Standardwert für dieses Merkmal für DB2 ist CURRENT TIMESTAMP.

Oracle Der Standardwert für die Oracle-Datenbank ist SYSDATE.

Aktuelle Zeitmarken (Timestamps) laden - Beispiel

Dem Loader werden die unten angeführten Informationen zur Verfügung gestellt, um das Angebot mit einer OFFER_ID von 10123 zu aktualisieren. Das Startdatum hat einen Wert von CURRENT TIMESTAMP, und das Enddatum hat einen Wert von CURRENT TIMESTAMP + 14 DAYS.

  <OFFER 
    OFFER_ID="10123"
    STARTDATE="CURRENT TIMESTAMP">
    ENDDATE="CURRENT TIMESTAMP + 14 DAYS"
  />

Der Loader erkennt, dass die Spalten STARTDATE und ENDDATE in der Datenbank einen Zeitmarkendatentyp aufweisen. Auf der Basis der Eigenschaft CurrentTimeStampLiteral wird ermittelt, dass die Werte im aktuellen Zeitmarkenformat angegeben sind. Der Wert für STARTDATE stimmt mit dem Muster InputCurrentTimeStampFormat.1 überein und wird zu dem von der Eigenschaft CurrentTimeStampFormat.JDBC angegebenen Muster konvertiert. Der Wert für ENDDATE stimmt mit dem Format der Eigenschaft InputCurrentTimeStampFormat.2 überein und wird ebenfalls zu dem von der Eigenschaft CurrentTimeStampFormat.JDBC abgegebenen Muster konvertiert.

Aktuellen Zeitmarken (Timestamps) eine Zeitdauer hinzufügen - Beispiele

Der Loader ermöglicht es Ihnen, aktuellen Zeitmarken eine Zeitdauer hinzuzufügen. Wenn Sie beispielsweise ein Angebot laden möchten, ohne ein bestimmtes Datum anzugeben, müssen Sie ein Enddatum erstellen, sodass eine bestimmte Zeitdauer zwischen dem Start- und Enddatum verstreicht. Das folgende Beispiel funktioniert gut mit DB2:

  <Offer
    Startdate="Current Timestamp"
    Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours
      +0 Minutes +0 Seconds"
  />

Um die Zeitdauer für aktuelle Zeitmarken in einer plattformunabhängigen Weise zu behandeln, müssen Sie die aktuellen Zeitmarkenformate jedoch anpassen, indem Sie die Masken in der property-Eigenschaftsdatei zur Loader-Anpassung ändern. Im Folgenden ist ein Beispiel für angepasste Eigenschaftsspezifikationen für aktuelle Zeitmarken aufgeführt:

  CurrentTimestampLiteral=Current Timestamp

  InputCurrentTimestampFormat.0=Current Timestamp
  InputCurrentTimestampFormat.1=Current Timestamp %D Days
  InputCurrentTimestampFormat.2=Current Timestamp %M Months
  InputCurrentTimestampFormat.3=Current Timestamp %Y Years
  InputCurrentTimestampFormat.4=Current Timestamp %D Days %M Months
  InputCurrentTimestampFormat.5=Current Timestamp %D Days %M Months %Y Years
  InputCurrentTimestampFormat.5=Current Timestamp %H Hours %m Minutes %s Seconds

  CurrentTimestampFormat.JDBC=Current Timestamp %D Days %M Months %Y Years 
    %H Hours %m Minutes %s Seconds

Unter Verwendung des Angebotsbeispiels und dieser Eigenschaftsspezifikationen stimmt das Enddatum für das Angebot mit dem Muster InputCurrentTimestampFormat.5 überein. Dies führt zu den folgenden Angebotsinformationen unter Verwendung von CurrentTimestampFormat.JDBC.

  <Offer
    Startdate="Current Timestamp"
    Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds"
  />

Das oben aufgeführte Beispiel zeigt, wie der Loader mehrere aktuelle Zeitmarkenformate eingeben und sie entsprechend in ein geeignetes Ausgabeformat formatieren kann. Das folgende Beispiel zeigt, wie Sie plattformunabhängige Formate behandeln und sie plattformspezifischen Ausgabeformaten zuordnen können.

  <Offer
    Startdate="Now"
    Enddate="Now +14D +4M +1Y"
  />

  CurrentTimestampLiteral=Now

  InputCurrentTimestampFormat.0=Now
  InputCurrentTimestampFormat.1=Now %DD
  InputCurrentTimestampFormat.2=Now %MM
  InputCurrentTimestampFormat.3=Now %YY
  InputCurrentTimestampFormat.4=Now %DD %MM 
  InputCurrentTimestampFormat.5=Now %DD %MM %YY
  InputCurrentTimestampFormat.5=Sysdate %HH %mm %ss 

  CurrentTimestampFormat.JDBC=AddYears(AddMonths(AddDays(AddHours(AddMinutes(AddSeconds
    (Sysdate,%s),%m),%H),%D),%M),%Y)

Hinweis: Die oben genannte Anweisung dient lediglich als Beispiel. Sie wird nur dazu verwendet, die Anpassungsfunktion für ein hypothetisches Datenbankverwaltungssystem zu illustrieren. Sie gilt nicht für DB2 oder eine Oracle-Datenbank.

Unter Verwendung des Angebotsbeispiels und dieser Eigenschaftsspezifikationen stimmt das Enddatum für das Angebot mit dem Muster InputCurrentTimestampFormat.5 überein. Dies führt zu den folgenden Angebotsinformationen unter Verwendung von CurrentTimestampFormat.JDBC.

  <Offer
    Startdate="Current Timestamp"
    Enddate="AddYears(AddMonths(AddDays(AddMinutes(AddSeconds(Sysdate,0),0),0),14),4),1)"
  />

Verwandte Konzepte

Verwandte Aufgaben

Verwandte Referenzen

IBM Copyright