MySQL导入CSV,转换日期格式 - 最佳实践

时间:2013-11-07 18:03:54

标签: mysql datetime csv import

我正在编写一系列SQL脚本来导入CSV格式的大型数据集。我知道语法:

STR_TO_DATE('1/19/2013 5:11:28 PM', '%c/%e/%Y %l:%i:%s %p')

将正确转换传入的日期/时间字符串,如下所示:

2013-01-19 17:11:28

我带来的一个数据集有240,000条记录,其中包含78个字段/列,其中至少有16列是DATETIME字段。 我将使用不同的数据集定期执行此导入。 对于每次导入,我都会重命名表进行备份,并从干净,空的新表开始。 我的问题是:就最佳实践而言,哪种方式更好地采取进口方式?

  1. 使用LOAD DATA LOCAL INFILE
  2. 执行日期转换
  3. 使用LOAD DATA ...将所有数据带入VARCHAR字段,然后返回并分别转换16列中的每一列
  4. 认为我可以编写脚本来使用任何一种方法,但我正在寻求关于哪种方法“更好”的反馈。

1 个答案:

答案 0 :(得分:0)

您可以在几个简单的传递中转换所有列:

  1. 按原样导入数据,将您的临时日期存储在VARCHAR列中。
  2. 使用ALTER TABLE以正确的DATEDATETIME格式创建日期列。
  3. 使用UPDATE TABLE进行从原始列到DATETIME列的转换。
  4. 删除原始原始列。
  5. 另一种方法是在导入之前对CSV文件进行预处理,然后执行所有这些操作。