2

同じ構造の 2 つの異なるデータベースに 2 つのテーブルがあります。

1 つのテーブルを .dat ファイルにエクスポートしてから、db2 import コマンドを使用して別のテーブルにインポートしています。

import from $TEMP_DIR/TO_IMPORT.dat of del modified by dateformat=\"YYYY-MM-DD\" timeformat=\"HH:MM:SS\" timestampformat=\"YYYY-MM-DD HH:MM:SS.UUU\" chardel0x01 coldel|  COMMITCOUNT 1000 messages $LOG_DIR/to_import.log insert into MY_SCHEMA.MY_TABLE

TO_IMPORT.dat の行は次のとおりです。

col1_val|col2_val|col3_val|col4_val|col5_val

区切り文字は「|」です

col1、col2、col3 は、ソース テーブルと宛先テーブルの NOT NULL 列です。

ただし、ソース テーブルの一部の行では、col2 と col3 に文字値ではなくスペースが含まれています。

これらは、以下のように .dat ファイルで提供されます。

abc| | |def|pqr

現在、上記の行のインポート中に、これらのスペースは NULL と見なされるため、宛先テーブルの null 以外の列に null 値を挿入しようとするとすべてが失敗します。

この問題の解決策/回避策は何ですか?

読んでくれてありがとう!

4

1 に答える 1

3

オプション KEEPBLANKS を使用すると、スペースが NULL として扱われなくなります。

IBM DB2 ドキュメントから:

KEEPBLANKS - CHAR、VARCHAR、LONG VARCHAR、または CLOB 型の各フィールドの先頭と末尾の空白を保持します。このオプションを指定しないと、文字区切り文字の内側にないすべての先頭および末尾の空白が削除され、テーブルのすべての空白フィールドに NULL が挿入されます。

于 2013-01-23T17:24:35.757 に答える