L'utilitaire Loader peut insérer des valeurs dans des colonnes avec un type de données d'horodatage basé sur la lecture d'une horloge. Par exemple, dans WebSphere Commerce, le STARTDATE et le ENDDATE d'une offre peuvent avoir des valeurs basées sur l'heure à laquelle l'offre a été insérée dans la table. Pour prendre en charge cette fonctionnalité, Loader utilise la table MLTIME pour conserver les instances d'horodatage. Le schéma de cette table est le suivant :
table MLTIME ( INSTANCEID BIGINT not null, MLTIMESTAMP TIMESTAMP )
Vous pouvez personnaliser le nom de la table et de ses colonnes en modifiant le fichier de propriétés de personnalisation de Loader. Pour ce faire, procédez comme suit :
![]()
![]()
![]()
![]()
MassLoadCustomizer.properties se trouve dans le fichier archive MassLoader.zip. Extrayez ce fichier, renommez-le tout en gardant l'extension .properties. Placez-le ensuite dans un répertoire situé dans le chemin de classe.
Le fichier ISeries_LODWCSDTA_Customizer.properties se trouve dans le répertoire
/QIBM/ProdData/WebCommerce/properties. Copiez ce fichier dans le répertoire
/racine_inst/xml, renommez-le en conservant l'extension
.properties, puis apportez les modifications nécessaires au nouveau
fichier. Important : ne supprimez pas et ne modifiez pas le fichier
ISeries_LODWCSDTA_Customizer.properties d'origine.
Les noms de la table et de ses colonnes peuvent être personnalisés en modifiant les propriétés suivantes dans le fichier de propriétés de personnalisation :
TimestampTableName = MLTIME TimestampIdColumn = INSTANCEID TimestampValueColumn = MLTIMESTAMP
Les données d'entrée, pour spécifier les valeurs d'horodatage en cours, sont basées sur des profils de chaîne d'horodatage. Les masques suivants sont utilisés pour spécifier la durée de l'horodatage :
%D pour jours %M pour mois %Y pour années %H pour heures %m pour minutes %s pour secondes
Vous pouvez personnaliser les formats d'horodatage en cours en modifiant ou en ajoutant des masques dans le fichier de propriétés de personnalisation de Loader. Les masques d'entrée suivants sont fournis :
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)
Les données d'entrée, pour l'horodatage en cours, correspondent aux profils spécifiés. Si les données correspondent à un profil d'entrée spécifié, celui-ci est utilisé pour analyser les données d'entrée et l'utilitaire de chargement Loader convertit les données dans un format de sortie approprié avant de les insérer dans la base de données. De nouveaux profils peuvent être ajoutés dans la liste ci-dessus pourvu que les numéros des indices soient classé de façon séquentielle.
Il y a deux formats de sortie cibles pour spécifier des horodatages en cours :
Les profils cibles par défaut de Loader sont les suivants :
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
Les propriétés de ces profils peuvent également être personnalisés dans le fichier de propriétés de personnalisation. Lorsque vous personnalisez les propriétés CurrentTimestampFormat.Load et CurrentTimestampFormat.JDBC, vous devez vous assurer que la syntaxe de l'instruction est correcte pour le système de gestion de base de données.
La propriété CurrentTimestampLiteral est utilisée par Loader pour effectuer une détermination précoce pour savoir si la valeur de la colonne d'horodatage est dans un format d'horodatage en cours, évitant ainsi des calculs coûteux pour déterminer que la valeur n'est pas une représentation de chaîne d'horodatage.
CurrentTimestampLiteral = CURRENT TIMESTAMP
La valeur par défaut de cette propriété pour
DB2 est CURRENT TIMESTAMP.
La valeur par défaut pour la base de données Oracle est SYSDATE.
Exemple de chargement d'horodatage en cours
Les informations ci-après sont transmises à Loader pour la mise à jour de l'offre avec un OFFER_ID de 10123. CURRENT TIMESTAMP est la valeur de date de début et CURRENT TIMESTAMP + 14 DAYS est celle de date de fin.
<OFFER OFFER_ID="10123" STARTDATE="CURRENT TIMESTAMP"> ENDDATE="CURRENT TIMESTAMP + 14 DAYS" />
Loader reconnaît, dans la base de données, le type de données d'horodatage des colonnes STARTDATE et ENDDATE. Basées sur la propriété CurrentTimeStampLiteral, sont déterminées pour avoir les valeurs spécifiées, dans le format d'horodatage en cours. La valeur STARTDATE correspond au profil InputCurrentTimeStampFormat.1 et elle est convertie dans le profil spécifié par la propriété CurrentTimeStampFormat.JDBC. La valeur ENDDATE correspond au format de la propriété InputCurrentTimeStampFormat.2 et elle est également convertie selon le modèle spécifié par la propriété CurrentTimeStampFormat.JDBC.
Exemple d'ajout de durée à des horodatages en cours
Loader vous donne la possibilité d'ajouter des durées à des horodatages en cours. Par exemple, vous pouvez vouloir charger une offre sans entrer de date spécifique. Pour ce faire, vous devez créer une date de fin éloignée d'une certaine durée de la date de début. L'exemple suivant fonctionne bien sous DB2 :
<Offer Startdate="Current Timestamp" Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds" />
Pour traiter des durées d'horodatage en cours indépendantes de la plate-forme, vous devez cependant personnaliser les formats d'horodatages en cours en modifiant les masques dans le fichier de propriétés de personnalisation Loader. Voici un exemple de spécifications de propriétés d'horodatages en cours :
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
En utilisant l'exemple d'offre et ces spécifications de propriétés, la date de fin de l'offre correspond au profil InputCurrentTimestampFormat.5. Cela analyse les informations suivantes de l'offre, utilisant CurrentTimestampFormat.JDBC.
<Offer Startdate="Current Timestamp" Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds" />
L'exemple ci-dessus montre comment Loader peut entrer de multiples formats d'horodatages en cours et le formater de façon appropriée selon un format de sortie désiré. L'exemple suivant montre comment vous pouvez gérer des formats indépendants de la plate-forme et les mapper à des formats de sortie, spécifique à la plate-forme.
<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)
Remarque : L'instruction ci-dessus est uniquement fournie à titre d'exemple. Elle est simplement utilisée pour illustrer la fonction de personnalisation pour un système de gestion de base de données hypothétique. Elle ne s'applique ni à une base de données DB2 ni à une base de données Oracle.
En utilisant l'exemple d'offre et ces spécifications de propriétés, la date de fin de l'offre correspondra au profil InputCurrentTimestampFormat.5. Cela analyse les informations suivantes de l'offre, utilisant CurrentTimestampFormat.JDBC.
<Offer Startdate="Current Timestamp" Enddate="AddYears(AddMonths(AddDays(AddMinutes(AddSeconds(Sysdate,0),0),0),14),4),1)" />
![]() |