首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CSV导入MySQL并转换日期

问将CSV导入MySQL并转换日期
EN

Stack Overflow用户
提问于 2012-07-20 12:13:14
回答 2查看 7.1K关注 0票数 0

我知道以前有人问过这个问题,但出于某种原因,我仍然一无所获。我正在尝试导入CSV文件并将日期字段转换为正确的mysql格式(YYYY-MM-DD)。我应该注意到,csv中的一些记录的日期值为空值'‘。不确定这是否意味着什么。我还应该提到,我在这个表中已经有了recordd。它不是空的。我试着运行这个程序,但是没有成功。

代码语言:javascript
复制
load data local infile '/Users/Path/To/CSV/file.csv' 
into table donor fields terminated by ',' 
lines terminated by '\n' (@date,INSTRUCTIONS)
set date = STR_TO_DATE(@date, '%Y-%m-%d')

我得到了所有它们的NULL返回值。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-20 12:21:39

如果只执行一次此操作,并且表是空的,则可以运行导入,但首先修改表,使date列的类型为VARCHAR。然后运行UPDATE table SET date = str_to_date( date, '%m/%d/%Y'),并将列转换回DATETIME或DATE。

您也可以添加第二个date列,格式为DATE,以VARCHAR格式导入到第一个date列中,然后运行UPDATE table SET date2 = str_to_date( date1, '%m/%d/%Y')并删除varchar列。

需要注意的是,STR_TO_DATE()的第二个参数是输入格式,而不是结果格式。因此,在第二个参数中,您将指示MySQL CSV中的日期格式为Y-m-d。如果它实际上是m/d/Y,则应该使用`STR_TO_DATE(@date_date,'%m/%d/%Y)‘。

希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2012-07-20 13:46:48

这可能是正确的-

代码语言:javascript
复制
LOAD DATA LOCAL INFILE '/Users/Path/To/CSV/file.csv'  
INTO TABLE tbl1 FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date,INSTRUCTIONS)
SET date = STR_TO_DATE(@date,'%Y/%m/%d);

为什么你要用@date_date而不是@date?我认为你得到了这个,因为它被认为是不完整的值,所以返回NULL。请参阅MySQL docs。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11572797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档