LOAD DATA INFILE コマンドで特定のフィールドをスキップする方法を教えてください。
次のテーブルがあるとしましょう。
CREATE TABLE stuff (
id INT UNSIGNED AUTO_INCREMENT NOT NULL,
name CHAR(64) NOT NULL,
junk CHAR(64) NOT NULL,
a ENUM('N','Y') NOT NULL DEFAULT 'N',
PRIMARY KEY (id)
);
そして私のファイル:
,name1,junk1,
,name2,junk2,
,name3,junk3,Y
次のステートメントを実行します。
LOAD DATA INFILE 'myfile' INTO TABLE stuff FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
自動インクリメントを自動的にスキップして適切に処理しますか? すべてを適切に処理しているように見えますが、これにより次の警告が生成されます。
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 1
Warning (Code 1265): Data truncated for column 'a' at row 1
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 2
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3
Warning (Code 1265): Data truncated for column 'a' at row 3
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 4
先頭のコンマを削除すると、データが正しく入力されません。