質問: mysql date型にnullが設定できない。 csvファイルからmysqlにデータを取り込む際に、date型やint型にnullを設定するにはどうしたらよいでしょうか。 以下のようなテーブルに | ttest | create table `ttest` ( `id` bigint(20) not null, `title` text not null, `naiyou` varchar(100) default null, `kaishi` date default null, `owari` date default null, `peirod` bigint(20) default null ) engine=innodb default charset=sjis | 以下のようなcsvファイルを読み込んだとき(*)、 10,テスト,2008-04-05,2009-04-23,43 11,テスト,2008-04-05,null,43 12,テスト,2008-04-05,2009-04-23,null 2行目のnullで error 1292 (22007): incorrect date value: 'null' for column .... とエラーが発生します。 3行目のnullでもint型ですが同様にエラーとなります。 一方、insertで行の追加以下のようにした場合は成功します。 insert into ttest values (12,テスト,'2008-04-05',null,null) 外部ファイルから読み込んだ場合にnull値を設定するにはどのようにしたらよいのでしょうか。 (*)以下のコマンド load data infile "e:\\work\\mysql\\sample.csv" into table ttest fields terminated by "," lines terminated by "\r\n";
回答: 表の構成列は6個あるのに、csvファイルは5個しか値がないのでしょうか? insert文では格納できたというのも、実際に使ったinsert文と違っているのでしょうか? →列名のリストを省略しているのに、values句では5個の値しか指定しておらず、エラーになるはず。 >外部ファイルから読み込んだ場合にnull値を設定するにはどのようにしたら 表の定義通りの順序、個数でcsvファイルを作るのであれば、 \n を入れておけば、nullで格納できます。 「表の定義通りの順序、個数でcsvファイルを作らずに」といった要件があるなら、具体的な内容を提示してください。