web-dev-qa-db-ja.com

タイムスタンプ形式が原因のDB2ロード障害

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 \"に置き換えられました。前述のように、それも機能しないようです。

これを修正するためにあなたの助けを要求し、私が試したようにこれらすべてのロードオプションをパラメータ化できるかどうかを知りたいのです。

ありがとう、トム

2
Tom_BIDW

次のようにステートメントを作成し、テーブルのデータ形式を確認し、時間も一致していることを確認します(例:| 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

幸運を

1
Steven Keller