1

我有一个 csv 文件,其中有一个日期字段,格式如下(在其他字段中):

17DEC2009

当我执行 mysqlimport 时,其他字段已正确导入,但该字段仍然存在 0000-00-00 00:00:00

如何正确导入此日期?我是否必须首先对文件运行 sed/awk 命令才能将其转换为正确的格式?如果是这样,那会是什么样子?月份是拼写而不是数字的事实是否重要?

4

3 回答 3

5

STR_TO_DATE()使您能够在查询中将字符串转换为适当的 DATE。它需要日期字符串和格式字符串。

检查手册条目中的示例以找出正确的格式。

我认为它应该是这样的%d%b%Y(但是 %b 应该产生类似Dec而不是这样的字符串,DEC所以你必须尝试它是否有效)。

于 2010-01-17T01:07:38.860 回答
1

我过去有这个问题。我要做的是利用 LOAD DATA 并在此处设置适当的表达式-

[SET col_name = expr,...]

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2010-01-17T00:55:36.863 回答
0

这是我解决类似问题的方法。我的用例有这么多列,有点复杂,但在这里很容易展示解决方案。我有带有 (Id int autogen, name varchar(100),DOB date) 的 Persons 表,需要从 CSV 文件中填充几百万条数据(name,DOB)。

  1. 在名称类似 (varchar_DOB varchar(25)) 的个人表中创建了附加列。
  2. 使用 mysqlimport 实用程序将数据导入列(名称,varchar_DOB)。
  3. 使用 str_to_date(varchar_DOB,'format') 函数执行更新 DOB 列的更新查询。
  4. 现在,我期望数据填充 DOB 列。

甚至可以将相同的逻辑应用于进行其他类型的数据格式化,例如 double、time_stamp 等。

于 2017-12-05T12:25:40.950 回答