カンマで区切られた3〜4列の数値を含むことができるファイルがあります。空のフィールドは、行の最後にある場合を除いて定義されます。
1,2,3,4,5
1,2,3,,5
1,2,3
次のテーブルはMySQLで作成されました。
+ ------- + -------- + ------ + ----- + --------- + ------- + | フィールド| タイプ| ヌル| キー| デフォルト| エクストラ| + ------- + -------- + ------ + ----- + --------- + ------- + | 1つ| int(1)| はい| | NULL | | | 2 | int(1)| はい| | NULL | | | 3 | int(1)| はい| | NULL | | | 4 | int(1)| はい| | NULL | | | 5 | int(1)| はい| | NULL | | + ------- + -------- + ------ + ----- + --------- + ------- +
MySQL LOADコマンドを使用してデータをロードしようとしています:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
結果のテーブル:
+ ------ + ------ + ------- + ------ + ------ + | 1つ| 2 | 3 | 4 | 5 | + ------ + ------ + ------- + ------ + ------ + | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | + ------ + ------ + ------- + ------ + ------ +
問題は、生データでフィールドが空で定義されていない場合、MySQLが何らかの理由で列のデフォルト値(NULL)を使用せず、ゼロを使用するという事実にあります。フィールドがすべて欠落している場合、NULLは正しく使用されます。
残念ながら、私はこの段階でNULLと0を区別できなければならないので、どんな助けでも感謝します。
ありがとうS.
編集する
SHOW WARNINGSの出力:
+ --------- + ------ + -------------------------------- ------------------------ + | レベル| コード| メッセージ| + --------- + ------ + -------------------------------- ------------------------ + | 警告| 1366 | 不正な整数値:行2の列 'four'の '' | | 警告| 1261 | 行3にすべての列のデータが含まれていません| | 警告| 1261 | 行3にすべての列のデータが含まれていません| + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
。データスキーマの変更については、d6tstack SQLの例のセクションを参照してください。