我想将 csv 文件导入数据库
标题 ID,姓名,姓氏,日期1,日期2
数据 10001,鲍勃·罗伯茨,03/06/2007 15:18:25.10,03/06/2007 15:18:29.19
该文件有数百万行,为了导入它,我使用了以下命令:
mysqlimport --ignore-lines=1 --fields-terminated-by=, --columns='id,name,surname,date1,date2' --local -u root -p Database /home/server/Desktop/data.csv
我的问题是,当我尝试导入时,文件日期未正确存储,它们看起来像这样:
'0000-00-00 00:00:00'
我尝试了很多方法,但没有任何效果。我认为问题是由以下事实引起的:时间是毫秒,并且字符串末尾有一个点而不是冒号。
我的日期存储在时间戳变量中
你能帮我吗
谢谢
最佳答案
您的日期不是 MySql 标准格式,即“YYYY-mm-dd HH:MM:SS”。
Mysqlimport 应该能够接受命令行参数中的某些日期转换函数,就像您使用“LOAD DATA”命令(由 mysqlimport 实用程序使用)时所做的那样,但目前还不能:
http://bugs.mysql.com/bug.php?id=55666
这里有一些解决这个问题的方法:
http://blog.dgaspar.com/2010/08/01/the-set-clause/
如果您想一步完成此转换并且不想使用该解决方法,则需要直接使用“LOAD DATA”命令:
load data infile '/tmp/xxx.dat'
into table xxx
fields terminated by '|'
lines terminated by '\n'
(col1,
col2,
@col3,
@col4,
col5)
set
col3 = str_to_date(@col3, '%m/%d/%Y'),
col4 = str_to_date(@col4, '%d/%m/%Y')
我从以下位置获得此代码:http://dev.mysql.com/doc/refman/5.1/en/load-data.html#c8828
关于mysql - 在mysql中导入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610208/