我有一个 csv 文件,其中有一个日期字段,格式如下(在其他字段中):
17DEC2009
当我执行 mysqlimport 时,其他字段已正确导入,但该字段仍然存在 0000-00-00 00:00:00
如何正确导入此日期?我是否必须首先对文件运行 sed/awk 命令才能将其转换为正确的格式?如果是这样,那会是什么样子?月份是拼写而不是数字的事实是否重要?
我有一个 csv 文件,其中有一个日期字段,格式如下(在其他字段中):
17DEC2009
当我执行 mysqlimport 时,其他字段已正确导入,但该字段仍然存在 0000-00-00 00:00:00
如何正确导入此日期?我是否必须首先对文件运行 sed/awk 命令才能将其转换为正确的格式?如果是这样,那会是什么样子?月份是拼写而不是数字的事实是否重要?
STR_TO_DATE()使您能够在查询中将字符串转换为适当的 DATE。它需要日期字符串和格式字符串。
检查手册条目中的示例以找出正确的格式。
我认为它应该是这样的%d%b%Y
(但是 %b 应该产生类似Dec
而不是这样的字符串,DEC
所以你必须尝试它是否有效)。
我过去有这个问题。我要做的是利用 LOAD DATA 并在此处设置适当的表达式-
[SET col_name = expr,...]
这是我解决类似问题的方法。我的用例有这么多列,有点复杂,但在这里很容易展示解决方案。我有带有 (Id int autogen, name varchar(100),DOB date) 的 Persons 表,需要从 CSV 文件中填充几百万条数据(name,DOB)。
甚至可以将相同的逻辑应用于进行其他类型的数据格式化,例如 double、time_stamp 等。