MySQL加载数据infile(日期时间为CSV的“NULL”字符串)

时间:2014-03-10 12:33:18

标签: mysql sql import

您好我有以下CSV格式

id   (tab)  creation_date
-------------------------
1           2012-05-04 15:26:45.000
2           NULL

对于我正在使用的导入:

load data local infile './test.csv' into table TEST fields terminated by '\t'
  lines terminated by '\n'
  IGNORE 1 LINES
    (id,@creation_date)
  SET
    creation_date = nullif(@creation_date,'NULL');

但遗憾的是,NULL值(String)未被解释并在列中设置为NULL。相反,我收到关于数据截断的警告,并且插入了一个默认日期....

如何检查:String =“NULL”然后将NULL插入列?

3 个答案:

答案 0 :(得分:0)

您可以使用“TRAILING NULLCOLS”将文件中的空值插入数据库。

例如:

load data
infile 'test1.csv'
APPEND
into table tab1
TRAILING NULLCOLS
( 
id integer <data type> TERMINATED BY ',',
creation_date <data type>
 )

答案 1 :(得分:0)

要小心,它是如此愚蠢,但我管理错误。 由于日期是行中的最后一列,并且没有'“'用于拆分列,因此mysql会解释具有尾随回车符的列!

解决方案:

load data local infile './test.csv' into table TEST fields terminated by '\t'
  lines terminated by '\n'
  IGNORE 1 LINES
    (id,@creation_date)
  SET
    creation_date = nullif(@creation_date,'NULL\r');

我知道它看起来太脏了!

<强>编辑: 所以当然使用线路终端更明智;)

load data local infile './test.csv' into table TEST fields terminated by '\t'
  lines terminated by '\r\n'
  IGNORE 1 LINES
    (id,@creation_date)
  SET
    creation_date = nullif(@creation_date,'NULL');

...也许有人会遇到同样的问题,并希望遵循我的路径:)

答案 2 :(得分:0)

使用 \N 插入 NULL 字符串,效果很好