EXPORTコマンドにMLSCRIPTオプションを指定すると、FastExportは、エクスポート タスクの関数パラメータを使用してMultiLoadスクリプト ファイルを生成します。このMultiLoadスクリプト ファイルを使用すれば、エクスポート データを後でデータベースに再ロードして戻すことができます。
以下の項に、生成されるMultiLoadスクリプト ファイルの例を挙げ、ファイルを実行する前に必要な変更について説明します。また、OUTMODルーチンやFastExportジョブで使用する複数の選択文の影響などについても説明します。
スクリプト ファイルの例
/* Date of extract: MON SEP 24, 2012 */ /* Time of extract: 16:59:15 */ /* Total records extracted for select 1 = 2 */ /* Output record length for select 1 = 41 variable */ /* NOTE: THE SCRIPT BELOW MAY NEED TO BE MODIFIED BEFORE RUNNING. */ .LOGTABLE LOGTABLE165915; .LOGON slugger/fexp_usr,fexp_usr; .SET DBASE_TARGETTABLE TO 'fexp_usr'; .SET DBASE_WORKTABLE TO 'fexp_usr'; .SET DBASE_ETTABLE TO 'fexp_usr'; .SET DBASE_UVTABLE TO 'fexp_usr'; .SET TARGETTABLE TO 'TABLE165915'; .BEGIN IMPORT MLOAD TABLES &DBASE_TARGETTABLE..&TARGETTABLE WORKTABLES &DBASE_WORKTABLE..WT_&TARGETTABLE ERRORTABLES &DBASE_ETTABLE..ET_&TARGETTABLE &DBASE_UVTABLE..UV_&TARGETTABLE; .LAYOUT DATAIN_LAYOUT; .FIELD COL001 1 INTEGER; .FIELD COL002 5 DATE; .FIELD COL003 9 CHAR(5); .FIELD COL004 14 VARCHAR(8); .FIELD COL005 * BYTEINT; .FIELD COL006 * SMALLINT; .FIELD COL007 * DECIMAL(5,2); .FIELD COL008 * BYTE(2); .FIELD COL009 * VARBYTE(3); .FIELD COL010 * FLOAT; .DML LABEL INSERT_DML; INSERT INTO &DBASE_TARGETTABLE..&TARGETTABLE ( COL001 = :COL001 ,COL002 = :COL002 ,COL003 = :COL003 ,COL004 = :COL004 ,COL005 = :COL005 ,COL006 = :COL006 ,COL007 = :COL007 ,COL008 = :COL008 ,COL009 = :COL009 ,COL010 = :COL010 ); .IMPORT INFILE dedtfm09.dat FORMAT FASTLOAD LAYOUT DATAIN_LAYOUT APPLY INSERT_DML; .END MLOAD; .LOGOFF &SYSRC; /* End of script */
MultiLoadスクリプト ファイルの変更
必要に応じて、生成後のMultiLoadスクリプト ファイルで以下のトピックを変更します。
- ターゲット表の名前
- INSERT文の列名
- LAYOUT文のフィールド名
- ログオン列
- ログ表名
- 次の各表のデータベース
- ターゲット表
- 作業テーブル
- エラー テーブル
- 固有違反表
上記以外の変更箇所は次のとおりです。
- FastExportは、データベースから受信したフィールド サイズと型に基づいたMultiLoadスクリプトのレイアウトを生成します。ANSIDATEがDATEFORMコマンドで使用されている場合は、レイアウトの各フィールドにおける、すべてのANSI/SQL DateTimeのTIME、TIMESTAMPおよびINTERVALデータ型を、固定長のCHARデータ型に変換する必要があります。
FIELDの ANSI/SQL Date/Time仕様表は、ANSI/SQL DateTimeの各仕様について、変換の仕様とフォーマットの例を示しています。
- FastExportジョブでOUTMODルーチンを使用していて、OUTMODルーチンのレコード長が変更された場合は、生成されるMultiLoadスクリプトのレイアウト指定の変更が必要となる場合があります。
- FastExportジョブで複数のSELECT文を使用している場合、応答行はすべて同一構造になっている必要があります。応答行の構造が統一されていない場合は、生成されるMultiLoadスクリプトのレイアウトが正しく機能しません。この場合は、生成されるMultiLoadスクリプト ファイルのオプションを使用するために次のようにします。
- FastExportジョブのSELECT文ごとに個別のFastExportタスクを使用します。
- 該当する各EXPORTコマンドで、異なるfileidを指定したMLSCRIPTオプションを使用する。
MultiLoadスクリプトを生成するFastExportジョブを実行したあとに、同じバッチ ファイル内で、そのFastExportジョブで生成されたスクリプトを使用するMultilLoadジョブを実行しないでください。一部のOSクライアント プラットフォームでは、この2つのジョブを同じバッチ ファイル内で実行すると、スクリプトの生成が完了する前にMultiLoadジョブが開始する場合があり、MultiLoadジョブのクラッシュにつながります。