0

我正在编写一系列 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. 使用 LOAD DATA... 将所有数据带入 VARCHAR 字段,然后返回并分别转换 16 列中的每一列

认为我可以编写脚本来使用任何一种方法,但我正在寻求关于哪种方法“更好”的反馈。

4

1 回答 1

0

您可以通过几个简单的过程转换所有列:

  1. 按原样导入数据,将您的临时日期存储在VARCHAR列中。
  2. 用于ALTER TABLE以正确DATEDATETIME格式创建日期列。
  3. 用于UPDATE TABLE进行从原始列到DATETIME列的转换。
  4. 删除原始的原始列。

另一种方法是在导入之前对 CSV 文件进行预处理,从而避开所有这些步骤。

于 2013-11-07T18:13:46.253 回答