Chargement d'horodatage en cours

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 :

  1. Créez un nouveau fichier de propriétés de personnalisation Loader.

    Windows NT Windows 2000 AIX Solaris Linux 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.

  2. Important : Ne supprimez pas et ne modifiez pas le fichier existant MassLoadCustomizer.properties.

    iSeries 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.

  3. Modifiez les valeurs des propriétés spécifiées dans le nouveau fichier de propriétés de personnalisation de Loader.
  4. Spécifiez le nom du nouveau fichier comme valeur du paramètre de personnalisation de l'instruction Load.

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 :

  1. CurrentTimestampFormat.Load est employé lorsque Loader fonctionne en mode chargement ou importation.
  2. CurrentTimestampFormat.JDBC est employé lorsque Loader utilise JDBC pour insérer ou mettre à jour des valeurs dans la base de données.

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

DB2 La valeur par défaut de cette propriété pour DB2 est CURRENT TIMESTAMP.

Oracle 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)"
  />

Rubriques connexes

Tâches connexes

Référence connexe

IBM copyright