ファイルからテーブルにデータをロードするときにいくつかの制約の問題が発生しました
**
SQL3109N The utility is beginning to load data from file
"xag".
SQL3500W The utility is beginning the "LOAD" phase at time "07/30/2012
23:33:53.199615".
SQL3519W Begin Load Consistency Point. Input record count = "0".
SQL3520W Load Consistency Point was successful.
SQL3116W The field value in row "F12-33856" and column "9" is missing, but
the target column is not nullable.
SQL3185W The previous error occurred while processing data from row
"F12-33856" of the input file.
SQL3227W Record token "F12-33856" refers to user record number "440439".**
db2 LOAD client from data of del MESSAGES msg replace INTO TABLE_L ;
このメッセージは、行440439に制約の問題があることを示していると思いましたが、そうではないようです。誰かがメッセージを読む方法を知っていますか?
IBMによると SQL3227W 状態:
「レコードトークンtoken1は、ユーザーレコード番号token2を参照しています。説明
テーブルのLOAD、IMPORT、またはEXPORT中にエラーまたは警告が発生しました。問題が発生した時点でCPUの並列処理は1より大きく、SQLレコードが書き込まれ、特別な一意のトークンでユーザーレコードを識別しました。このメッセージは、一意のレコードトークンをソースユーザーデータのレコード番号にマップするのに役立ちます。 ユーザーの応答
適切なアクションについては、返された元のSQLメッセージを参照してください。」
したがって、これは前のエラーに戻ることを示します。そして次のもの SQL3185W は言う:
"入力ファイルの行row-numberからのデータの処理中に前のエラーが発生しました。説明
このメッセージは、メッセージファイルにリストされた前のメッセージ(SQL3306など)のエラーが発生した行を識別します。 ユーザーの応答
アクションは必要ありません。」
だから...頭にそれを釘付けにして、私たちは本当にこれらのメッセージの前に何が来るかを見る必要があります。質問に投稿できる出力のログはありますか?その場合、結果の解釈を支援することができます。
そうは言っても、厄介な「SQL」メッセージの意味を見つけるのに最も役立つので、私が行ったようにインフォメーションセンターをざっと見てみることを強くお勧めします。私が見つけたリンクは9.5のものでした。使用しているDB2のバージョンに切り替えるだけで、最も正確な情報を入手できます。ほぼすべての目的でインフォメーションセンターを使用しています。
編集:更新すると非常に役立ちます。ここにエラーがあります:
SQL3116W The field value in row "F12-33856" and column "9" is missing, but the target column is not nullable. SQL3185W The previous error occurred while processing data from row "F12-33856" of the input file. SQL3227W Record token "F12-33856" refers to user record number "440439".**
つまり、テーブルの「列9」にnullが書き込まれ、その列にnullでない制約があるようです。ここでの秘訣は、問題があったレコードを見つけることです。これは、2つのトークンでマークされています。 (F12-33856および440439)。私は最初に440439から始めると思います。それが主キーになる可能性があるように私には思えます。ただの推測です。ただし、少なくとも、問題がnull以外のフィールドのnull値であることがわかります。
エラーメッセージは基本的にこれを言います:440439行の場合、9番目の列の区切り文字の間に何もありません。したがって、NULLと見なされますが、テーブルでは9番目の列にNULL値を使用できません。そのため、行440439はテーブルにロード(挿入)されていません。
私はDB2を初めて使用しますが、一連のトラブルシューティングと成功の後、いくつかの支援を提供できます。
ファイルをエクスポートするときは、ファイルが適切に区切られていることを確認してください。
たとえば、次の表では
CREATE TABLE ADMIN.TEST
(C1 VARCHAR(30) ,
C2 TIMESTAMP ,
C3 DECIMAL(7,2) ,
C4 CHAR(1))
ORGANIZE BY COLUMN;
ファイルは次のように区切られている必要があります。
"Liszt"
"Hummel",,187.43, H
"Grieg", 2006-05-23-15.55.53.209971, 66.34, G
"Satie", 2006-05-22-19.34.14.947681, 818.23, I
Aginity
などの一部のエクスポートツールは、1つのフィールドで2つのフィールドをツリーフィールドに結合します。したがって、システムにより大きなフィールドとして読み取られます。お役に立てれば。