我有一个MySQL脚本,每周将大型数据集(约250,000条记录)导入数据库。该表有85个数据字段,其中18个是DATETIME字段。对于这18个日期字段中的每一个,脚本必须运行以下命令:
setInterval
当然,为了优化脚本,它有一个ALTTER语句添加所有DATETIME列,另一个ALTER语句删除转换后的RAW数据字段。
正如您可能想象的那样,在25万条记录上运行转换十八次需要花费相当多的时间。我的问题是:有没有办法让导入函数转换日期本身,而不是在导入后运行转换?
答案 0 :(得分:0)
我的建议?将两列都保留在那里以避免痛苦的架构更改(如果这是常规的事情)。
您还可以在导入数据之前尝试修复数据以开始正确的日期格式。理想情况下,这是ISO 8601 format,YYYY-MM-DD HH:MM:SS
。
如果您通过CSV提取,通常可以在执行LOAD DATA
步骤之前将其作为通行证轻松修复。
您还可以在临时表中暂存数据,根据需要进行更改,然后仅在所有操作完成时将数据合并到主集中。改变250K行表的模式并不是那么糟糕。对于数百万行,它可能是残酷的。