プロが教えるわが家の防犯対策術!

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";

A 回答 (1件)

表の構成列は6個あるのに、csvファイルは5個しか値がないのでしょうか?



insert文では格納できたというのも、実際に使ったinsert文と違っているのでしょうか?
→列名のリストを省略しているのに、values句では5個の値しか指定しておらず、エラーになるはず。

>外部ファイルから読み込んだ場合にNULL値を設定するにはどのようにしたら

表の定義通りの順序、個数でcsvファイルを作るのであれば、

\N

を入れておけば、nullで格納できます。

「表の定義通りの順序、個数でcsvファイルを作らずに」といった要件があるなら、具体的な内容を提示してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>\N
>を入れておけば、nullで格納できます。

\Nをセットすることでできました。
ありがとうございます。


>insert文では格納できたというのも、実際に使ったinsert文と違っているのでしょうか?

質問するために余分な情報を削除したりした際に、一列削除しわすれました。
混乱させてしまい恐縮です。


回答ありがとうございました。

お礼日時:2011/05/21 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す