カンマで区切られた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 | | + ------- + -------- + ------ + ----- + --------- + ------- +
MySQLLOADコマンドを使用してデータをロードしようとしています。
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の列'4'の'' | 警告| 1261 | 行3には、すべての列のデータが含まれているわけではありません| | 警告| 1261 | 行3には、すべての列のデータが含まれているわけではありません| + --------- + ------ + -------------------------------- ------------------------ +