ローダーは、列に、時刻機構の読み取りに基づいてタイム・スタンプのデータ・タイプの値を挿入することができます。 たとえば、WebSphere Commerce におけるオファーの STARTDATE および ENDDATE には、 オファーがテーブルに挿入された時刻に基づく値を持たせることができます。 この機能をサポートするために、ローダー・パッケージでは MLTIME テーブルを 使用してタイム・スタンプのインスタンスを保持しています。 このテーブルのスキーマは以下のとおりです。
table MLTIME ( INSTANCEID BIGINT not null, MLTIMESTAMP TIMESTAMP )
ローダー・カスタマイザー・プロパティー・ファイルを変更することによって、 テーブルの名前およびその列をカスタマイズできます。 以下のようにして、それを行うことができます。
![]()
![]()
![]()
![]()
MassLoadCustomizer.properties は、MassLoader.zip アーカイブにあります。 このファイルを抽出し、.properties 拡張子はそのままにして名前を変更し、 クラスパス内のディレクトリーに置きます。
ISeries_LODWCSDTA_Customizer.properties は、
/QIBM/ProdData/WebCommerce/properties ディレクトリーにあります。 このファイルを /instroot/xml ディレクトリーにコピーし、
.properties という拡張子をそのままにしながら新規ファイルの名前を変更し、
その後この新規ファイルに必要な変更を行います。重要: オリジナルの ISeries_LODWCSDTA_Customizer.properties ファイルを除去または変更しないでください。
テーブルの名前および列は、ローダー・カスタマイザー・プロパティー・ファイル内の以下のプロパティーを変更することによりカスタマイズすることができます。
TimestampTableName = MLTIME TimestampIdColumn = INSTANCEID TimestampValueColumn = MLTIMESTAMP
現在のタイム・スタンプの値に対する入力データは、タイム・スタンプ・ストリング・パターンに基づいています。 タイム・スタンプの期間を指定するのに、以下のマスクが使用されます。
%D は日を指定します %M は月を指定します %Y は年を指定します %H は時を指定します %m は分を指定します %s は秒を指定します
ローダー・カスタマイザー・プロパティー・ファイル内のマスクを変更または追加することによって、 現在タイム・スタンプの形式をカスタマイズすることができます。 以下の入力マスクが提供されています。
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)
現在のタイム・スタンプに対する入力データは、指定されたパターンと突き合わされます。 データが指定された入力パターンと一致する場合は、そのパターンを使用して入力データが構文解析され、 データベースにそのデータを挿入する前に、ローダーはデータを適切な出力形式に変換します。 添え字の数値が順次に並んでいれば、上記のリストに新規のパターンを追加することができます。
現在のタイム・スタンプを指定する場合には、2 つのターゲット出力形式があります。
ローダーの、デフォルトのターゲット・パターンは以下のとおりです。
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
これらのパターンのプロパティーも、 ローダー・カスタマイザー・プロパティー・ファイルでカスタマイズすることができます。 CurrentTimestampFormat.Load および CurrentTimestampFormat.JDBC プロパティーをカスタマイズする場合、 結果ステートメントの構文が指定されたデータベース管理システムに対して有効であることを確認してください。
CurrentTimestampLiteral プロパティーは、 ローダーが、タイム・スタンプ列の値が現在タイム・スタンプの形式であるかどうかを前もって判別するのに使用します。 これにより、値がタイム・スタンプのストリング表現でないことを判別するのに大量の計算をする必要がなくなります。
CurrentTimestampLiteral = CURRENT TIMESTAMP
DB2 の場合、
このプロパティーのデフォルト値は CURRENT TIMESTAMP です。
Oracle データベースのデフォルト値は SYSDATE です。
現在のタイム・スタンプのロード例
ローダーには、OFFER_ID が 10123 であるオファーを更新するための以下の情報が与えられます。 開始日の値は CURRENT TIMESTAMP で、 終了日の値は CURRENT TIMESTAMP + 14 DAYS となっています。
<OFFER OFFER_ID="10123" STARTDATE="CURRENT TIMESTAMP"> ENDDATE="CURRENT TIMESTAMP + 14 DAYS" />
ローダーは、データベース内で列 STARTDATE および ENDDATE が同じタイム・スタンプのデータ・タイプであることを認識します。 CurrentTimeStampLiteral プロパティーに基づいて、 値は現在タイム・スタンプ形式で指定された値になるように決定されます。 STARTDATE の値は InputCurrentTimeStampFormat.1 のパターンと一致し、 CurrentTimeStampFormat.JDBC プロパティーで指定されたパターンに変換されます。 ENDDATE の値は InputCurrentTimeStampFormat.2 プロパティーの形式と一致し、 これも CurrentTimeStampFormat.JDBC プロパティーで指定された値に変換されます。
現在のタイム・スタンプへの期間の追加例
ローダーを使用すると、現在のタイム・スタンプに期間を追加することができます。 たとえば、特定の日付を入力しないでオファーをロードしたい場合などです。 これを行うには、開始日よりある期間後の、終了日を作成する必要があります。 以下の例は DB2 で使用できます。
<Offer Startdate="Current Timestamp" Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds" />
ただし、プラットフォームに依存しない方法で現在タイム・スタンプの期間を扱うには、 ローダー・カスタマイザー・プロパティー・ファイル内のマスクを変更して、 現在のタイム・スタンプの形式をカスタマイズする必要があります。 以下は、カスタマイズした現在のタイム・スタンプのプロパティー仕様の例です。
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
オファーの例とこれらのプロパティー仕様を使用すると、 オファーの終了日は InputCurrentTimestampFormat.5 のパターンと一致します。 これにより、CurrentTimestampFormat.JDBC を使用してオファー情報は以下のようになります。
<Offer Startdate="Current Timestamp" Enddate="Current Timestamp +14 Days +4 Months +1 Year +0 Hours +0 Minutes +0 Seconds" />
上記の例では、ローダーがどのようにして複数の現在タイム・スタンプ形式を入力し、 適切に所要の出力形式に形式設定することができるかを示しています。 以下の例では、プラットフォームに依存しない形式を処理して、プラットフォーム固有の出力形式にマップする方法を示します。
<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)
注: 上記のステートメントは一例です。 これらは、仮想のデータベース管理システムのカスタマイズ・フィーチャーを説明するために用いられているに過ぎません。 DB2 および Oracle データベースには無効です。
オファーの例とこれらのプロパティー仕様を使用すると、 オファーの終了日は InputCurrentTimestampFormat.5 のパターンと一致します。 これにより、CurrentTimestampFormat.JDBC を使用してオファー情報は以下のようになります。
<Offer Startdate="Current Timestamp" Enddate="AddYears(AddMonths(AddDays(AddMinutes(AddSeconds(Sysdate,0),0),0),14),4),1)" />
![]() |