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:
![]()
![]()
![]()
![]()
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.
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.
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:
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
El valor
por omisión de esta propiedad para DB2 es CURRENT TIMESTAMP.
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)" />
![]() |