Cargar indicaciones de la hora actuales

Loader puede insertar valores en las columnas que tienen un tipo de datos de indicación de la hora basándose en la lectura del reloj de hora del día. Por ejemplo, las columnas STARTDATE y ENDDATE de una oferta de WebSphere Commerce pueden tener valores basados en la hora en la que se ha insertado la oferta en la tabla. Para dar soporte a estas funciones, Loader package utiliza la tabla MLTIME para mantener las instancias de indicación de la hora. El esquema de esta tabla es el siguiente:

  table MLTIME
    ( 
    INSTANCEID BIGINT not null,
    MLTIMESTAMP TIMESTAMP
    )

Puede personalizar el nombre de la tabla y sus columnas modificando el archivo de propiedades de personalización de Loader. Para ello, puede hacer lo siguiente:

  1. Cree un nuevo archivo de propiedades de personalización de Loader.

    Windows NT Windows 2000 AIX Solaris Linux MassLoadCustomizer.properties está situado en el archivador MassLoader.zip. Extraiga este archivo, cámbiele el nombre pero conserve la extensión .properties, y colóquelo en un directorio que esté en la vía de acceso de clases.

  2. Importante: No elimine ni modifique el archivo MassLoadCustomizer.properties existente.

    iSeries ISeries_LODWCSDTA_Customizer.properties está situado en el directorio /QIBM/ProdData/WebCommerce/properties. Copie este archivo en el directorio /raízinst/xml, cambie el nombre del nuevo archivo pero conserve la extensión .properties, y luego efectúe los cambios que sean necesarios en el nuevo archivo.Importante: No elimine ni modifique el archivo ISeries_LODWCSDTA_Customizer.properties original.

  3. Modifique los valores de las propiedades especificadas en el nuevo archivo de propiedades de personalización de Loader.
  4. Especifique el nombre del nuevo archivo como el valor del parámetro de personalización (customizer) del mandato Load.

El nombre de la tabla y sus columnas se pueden personalizar cambiando las propiedades siguientes en el archivo de propiedades de personalización de Loader:

  TimestampTableName = MLTIME
  TimestampIdColumn = INSTANCEID
  TimestampValueColumn = MLTIMESTAMP

Los datos de entrada para especificar los valores de indicación de la hora actual están basados en patrones de series de caracteres de indicación de la hora. Las máscaras siguientes se utilizan para especificar las duraciones de la indicación de la hora:

  %D para días
  %M para meses
  %Y para años
  %H para horas
  %m para minutos
  %s para segundos

Puede personalizar los formatos de indicación de la hora actual modificando o añadiendo máscaras en el archivo de propiedades de personalización de Loader. Se proporcionan las máscaras de entrada siguientes:

  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)

Los datos de entrada para la indicación de la hora actual se corresponden con los patrones especificados. Si los datos coinciden con un patrón de entrada especificado, dicho patrón se utiliza para analizar los datos de entrada y Loader convierte los datos al formato de salida correcto antes de insertarlos en la base de datos. Se pueden añadir patrones nuevos a la lista anterior siempre que los números de subíndice tengan un orden secuencial.

Hay dos formatos de salida de destino para especificar las indicaciones de la hora actuales:

  1. CurrentTimestampFormat.Load se utiliza cuando Loader funciona en modalidad de carga o de importación.
  2. CurrentTimestampFormat.JDBC se utiliza cuando Loader utiliza JDBC para insertar, actualizar o eliminar valores en la base de datos.

Los patrones de destino por omisión de Loader son los siguientes:

  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

Las propiedades de estos patrones también se pueden personalizar en el archivo de propiedades de personalización de Loader. Cuando personalice las propiedades CurrentTimestampFormat.Load y CurrentTimestampFormat.JDBC, debe asegurarse de que la sintaxis de la sentencia resultante sea válida para el sistema de gestión de bases de datos especificado.

Loader utiliza la propiedad CurrentTimestampLiteral para determinar previamente si el valor de la columna de indicación de la hora está en un formato de indicación de la hora actual y, de este modo, se evita realizar cálculos costosos para determinar que el valor no es una representación de serie de caracteres de la indicación de la hora.

  CurrentTimestampLiteral = CURRENT TIMESTAMP 

DB2 El valor por omisión de esta propiedad para DB2 es CURRENT TIMESTAMP.

Oracle El valor por omisión para la base de datos Oracle es SYSDATE.

Ejemplo de cómo cargar indicaciones de la hora actuales

Se proporciona a Loader la siguiente información para actualizar la oferta con el OFFER_ID 10123. La fecha de inicio tiene un valor CURRENT TIMESTAMP, y la fecha de finalización tiene un valor CURRENT TIMESTAMP + 14 DAYS.

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

Loader reconoce que las columnas STARTDATE y ENDDATE son de tipo de datos de indicación de la hora en la base de datos. Basándose en la propiedad CurrentTimeStampLiteral, se determina que los valores son valores especificados con el formato de indicación de la hora actual. El valor de STARTDATE coincide con el patrón InputCurrentTimeStampFormat.1 y se convierte al patrón especificado por la propiedad CurrentTimeStampFormat.JDBC. El valor de ENDDATE coincide con el formato de la propiedad InputCurrentTimeStampFormat.2, y también se convierte al patrón especificado por la propiedad CurrentTimeStampFormat.JDBC.

Ejemplos de cómo añadir duraciones a las indicaciones de la hora actuales

Loader le permite añadir duraciones a las indicaciones de la hora actuales. Por ejemplo, es posible que desee cargar una oferta sin que tener que entrar una fecha específica. Para hacerlo, deberá crear una fecha de finalización cuya duración sea de algún modo posterior a la fecha de inicio. El ejemplo siguiente funciona bien con DB2:

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

Sin embargo, para manejar duraciones de indicaciones de la hora actuales independientemente de la plataforma utilizada, deberá personalizar los formatos de indicación de la hora actual modificando las máscaras en el archivo de propiedades de personalización de Loader. Este es un ejemplo de especificaciones de propiedad de indicación de la hora actual personalizadas.

  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

Utilizando el ejemplo de oferta y estas especificaciones de propiedades, la fecha de finalización de la oferta coincide con el patrón InputCurrentTimestampFormat.5. Esto genera la información de oferta siguiente utilizando CurrentTimestampFormat.JDBC.

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

El ejemplo anterior muestra cómo Loader puede entrar varios formatos de indicación de la hora actual y darles un formato que se corresponda con el formato de salida deseado. El ejemplo siguiente le muestra cómo puede manejar formatos independientes de la plataforma utilizada y correlacionarlos con formatos de salida específicos de la plataforma.

  <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)

Nota: La sentencia anterior es solamente un ejemplo. Se utiliza simplemente para ilustrar la característica de personalización para un sistema de gestión de bases de datos hipotético. No es válida para una base de datos DB2 ni Oracle.

Utilizando el ejemplo de oferta y estas especificaciones de propiedades, la fecha de finalización de la oferta coincidirá con el patrón InputCurrentTimestampFormat.5. Esto genera la información de oferta siguiente utilizando CurrentTimestampFormat.JDBC.

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

Conceptos relacionados

Tareas relacionadas

Referencias relacionadas

IBM copyright