Caricamento dei formati orari correnti

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:

  1. Creare un nuovo file property di personalizzazione Loader.

    Windows NT Windows 2000 AIX Solaris Linux MassLoadCustomizer.properties si trova nell'archivio MassLoader.zip. Estrarre questo file, rinominarlo lasciando l'estensione .properties e posizionarlo in una directory nel classpath.

  2. Importante: Non rimuovere o modificare il file esistente MassLoadCustomizer.properties.

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

  3. Modificare i valori delle proprietà specificate nel nuovo file property di personalizzazione Loader.
  4. Specificare il nuovo nome file come valore del parametro di personalizzazione del comando Load.

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:

  1. CurrentTimestampFormat.Load viene utilizzato quando il Loader funziona in modalità load o import.
  2. CurrentTimestampFormat.JDBC viene utilizzato quando il Loader utilizza JDBC per inserire, aggiornare o eliminare i valori nel database.

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

DB2 Il valore predefinito per questa proprietà per DB2 è CURRENT TIMESTAMP.

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

Argomenti correlati

Attività correlate

Riferimenti correlati

IBM copyright