DB2ロードを使用してDB2データベーステーブルにファイルをロードしようとしています。 UNIXプロンプトから次のステートメントを使用して、ファイルをロードできます。
db2 + p -x load from BOM_Sales_20130326.txt of DEL MODIFIED BY COLDEL\| timestampformat =\"YYYY-MM-DD hh:mm:ss \" GEO_SALES.SDM_STL_VFRSK_SALESに挿入NONRECOVERABLE
しかし、多くのオプションをパラメーター化した後にスクリプトからDB2 Loadを呼び出そうとすると、機能しないようです。
たとえば、私はステートメントを次のように書き直しました。
db2 + p -x "COLDEL\$ FILE_DELMTR timestampformat = \" YYYY-MM-DD HH:MM:SS\"によって$ FILE_DIR/$ filenmからクライアントをロードし、$ TGT_SCHEMA_NM。$ FILE_STG_TBL_TGT NONRECOVERABLEに挿入します"
すべての変数には、statemantを呼び出す前に正しい値が割り当てられます。しかし、タイムスタンプの形式が間違っているために失敗したようです。エラーは次のとおりです。
SQL3191N行「F2-1」、列「1」、「2013-03-26 | STL | 5678 | D | 3212345」で始まるフィールドは、ユーザーが指定したDATEFORMAT、TIMEFORMAT、またはTIMESTAMPFORMATと一致しません。行は拒否されます。
実際、私の必要なのは、次のように、パラメーター "timestampformat"もパラメーターとして指定することです。 TGT_SCHEMA_NM。$ FILE_STG_TBL_TGT NONRECOVERABLE」
テスト目的でのみ機能していなかったため、変数$ DTTIME_FMTは\ "YYYY-MM-DD HH:MM:SS \"に置き換えられました。前述のように、それも機能しないようです。
これを修正するためにあなたの助けを要求し、私が試したようにこれらすべてのロードオプションをパラメータ化できるかどうかを知りたいのです。
ありがとう、トム
次のようにステートメントを作成し、テーブルのデータ形式を確認し、時間も一致していることを確認します(例:| 2011-01-23 14:44:36 | 2011-01-23 15:44:44 | 20140512) |は、私のDDLの私の時刻形式です)
load from myexport.del of del modified by coldel| delprioritychar dateformat=\"YYYY-MM-DD\" timestampformat=\"YYYY-MM-DD HH:MM:SS TT\" insert into mytable
幸運を