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:
![]()
![]()
![]()
![]()
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.
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.
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:
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
Der Standardwert für dieses Merkmal für DB2 ist CURRENT TIMESTAMP.
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)" />
![]() |