Con il Loader è possibile inserire all'interno delle colonne i valori con un tipo di dati relativi al formato orario in base alla lettura dell'orario giornaliero. Ad esempio, STARTDATE e ENDDATE per un'offerta in WebSphere Commerce possono avere valori basati sull'orario in cui l'offerta è stata inserita nella tabella. Per supportare questa funzione, il pacchetto Loader utilizza la tabella MLTIME per mantenere le istanze dei formati orari. Lo schema di questa tabella è il seguente:
table MLTIME ( INSTANCEID BIGINT not null, MLTIMESTAMP TIMESTAMP )
E' possibile personalizzare il nome della tabella e le relative colonne modificando il file property di personalizzazione Loader. Questa operazione può essere eseguita nel seguente modo:
![]()
![]()
![]()
![]()
MassLoadCustomizer.properties si trova nell'archivio MassLoader.zip. Estrarre questo file, rinominarlo lasciando l'estensione .properties e posizionarlo in una directory nel classpath.
ISeries_LODWCSDTA_Customizer.properties si trova nella directory
/QIBM/ProdData/WebCommerce/properties. Copiare
questo file nella directory /instroot/xml,
rinominarlo lasciando l'estensione .properties, quindi apportare
tutte le modifiche necessarie al nuovo file. Importante: Non rimuovere o modificare il file originale ISeries_LODWCSDTA_Customizer.properties.
Il nome della tabella e le relative colonne che possono essere personalizzate modificando le seguenti proprietà nel file property di personalizzazione Loader:
TimestampTableName = MLTIME TimestampIdColumn = INSTANCEID TimestampValueColumn = MLTIMESTAMP
I dati di immissione per la specifica dei valori dei formati orari correnti si basano sui modelli della stringa del formato orario. Le seguenti maschere vengono utilizzate per la specifica della durata dei formati orari:
%D per i giorni %M per i mesi %Y per gli anni %H per le ore %m per i minuti %s per i secondi
E' possibile personalizzare i formati data/ora correnti modificando oppure aggiungendo maschere nel file property di personalizzazione Loader. Vengono fornite le seguenti maschere di immissione:
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)
I dati di immissione per il formato data/ora corrente corrispondono ai modelli specificati. Se i dati corrispondono ad un modello di immissione specificato, tale modello viene utilizzato per analizzare i dati di immissione ed il Loader converte i dati nel formato di output appropriato inserendoli nel database. E' possibile aggiungere nuovi modelli all'elenco precedentemente fornito in cui i numeri degli script secondari sono ordinati in maniera sequenziale.
Sono disponibili due formati di emissione per la specifica dei formati orari correnti:
I modelli di destinazione predefiniti nel Loader sono i seguenti:
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
E' possibile personalizzare le proprietà per tali modelli all'interno del file property di personalizzazione Loader. Quando si personalizzano le proprietà CurrentTimestampFormat.Load e CurrentTimestampFormat.JDBC, assicurarsi che la sintassi dell'istruzione che ne deriva sia valida per il sistema di gestione del database fornito.
La proprietà CurrentTimestampLiteral viene utilizzata dal Loader per determinare se il valore della colonna del formato orario è nel formato orario corrente, evitando in questo modo costose elaborazioni per determinare se il valore non è una rappresentazione della stringa del formato orario.
CurrentTimestampLiteral = CURRENT TIMESTAMP
Il valore
predefinito per questa proprietà per DB2 è CURRENT TIMESTAMP.
il
valore predefinito per il database Oracle è SYSDATE.
Esempio di caricamento dei formati orari correnti
Il Loader viene presentato con le le informazioni seguenti per aggiornare l'offerta con un OFFER_ID di 10123. La data di inizio ha un valore CURRENT TIMESTAMP, mentre la data di fine ha un valore CURRENT TIMESTAMP + 14 DAYS.
<OFFER OFFER_ID="10123" STARTDATE="CURRENT TIMESTAMP"> ENDDATE="CURRENT TIMESTAMP + 14 DAYS" />
Il Loader riconosce che le colonne STARTDATE e ENDDATE hanno il formato orario presente nel database. In base alle proprietà CurrentTimeStampLiteral, i valori vengono riportati in modo tale che vengano specificati nel formato orario corrente. Il valore per STARTDATE corrisponde al modello InputCurrentTimeStampFormat.1 e viene convertito nel modello specificato dalla proprietà CurrentTimeStampFormat.JDBC. Il valore per ENDDATE corrisponde al formato della proprietà InputCurrentTimeStampFormat.2 e viene convertito nel modello specificato dalla proprietà CurrentTimeStampFormat.JDBC.
Esempi di aggiunta di durate ai formati orari correnti
Il Loader consente di aggiungere una durata ai formati orari correnti. Ad esempio, nel caso in cui si desidera caricare un'offerta senza immettere una data specifica. Affinché ciò sia possibile, è necessario creare una data di fine che abbia una durata dopo la data di inizio. Il seguente esempio si applica bene a DB2:
<Offer Startdate="Current Timestamp" Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds" />
Per gestire le durate dei formati orari correnti in una modalità indipendente dalla piattaforma, è necessario personalizzare i formati modificando le maschere all'interno del file property di personalizzazione Loader. Di seguito viene riportato un esempio di specifiche della proprietà del formato orario corrente personalizzato:
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
Utilizzando l'esempio dell'offerta e tali specifiche della proprietà, la data di fine per l'offerta corrisponderà al modello IputCurrentTimestampFormat.5. Ciò fornisce le seguenti informazioni sull'offerta utilizzando CurrentTimestampFormat.JDBC.
<Offer Startdate="Current Timestamp" Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds" />
L'esempio precedente illustra come il Loader possa immettere più formati orari correnti e trasformarli nel formato di emissione desiderato. Il seguente esempio illustra come gestire formati indipendenti dalla piattaforma e come creare una corrispondenza con i formati di emissione specifici per una data piattaforma.
<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 precedente istruzione è solo un esempio. Tale esempio viene utilizzato soltanto per illustrare la funzione di personalizzazione per un ipotetico sistema di gestione del database. Esso, infatti, non è valido per DB2 o per un database Oracle.
Utilizzando l'esempio dell'offerta e tali specifiche della proprietà, la data di fine per l'offerta corrisponderà al modello InputCurrentTimestampFormat.5. Ciò fornisce le seguenti informazioni sull'offerta utilizzando CurrentTimestampFormat.JDBC.
<Offer Startdate="Current Timestamp" Enddate="AddYears(AddMonths(AddDays(AddMinutes(AddSeconds(Sysdate,0),0),0),14),4),1)" />
![]() |