mysql - 在mysql中导入日期

标签 mysql sql mysqlimport

我想将 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/

相关文章:

php - php中使用mysql的多语言实现

mysql - 选择语句: Select referring previous select query

MySQL CSV 导入 - 输入的日期为 0000-00-00 00 :00:00 if timestamp has milliseconds?

mysql - Mysql 中是否有获取最小值或值的函数?

mySQL 将包含 ","的记录移动到新列

mysql - 为什么在该字段不存在时会出现重复条目​​?

mysql - 向列添加约束

sql - PostgreSQL:大对象的权限被拒绝

mysql - 如何从包含多个数据库的 .sql 文件导入单个数据库

java - 如何在where条件下传递多个搜索值