我正在使用Mysql工作台。
我在csv中有一个庞大的数据库,其中包含3列不同格式的日期。 为了能够将此csv文件加载到我的数据库中,我必须将3个日期列设置为文本,否则,它不会正确上载它们。 这是我的数据示例:
inDate, outDAte
19-01-10, 02-02-10
04-01-11 12:02, 2011-01-11 11:31
29-01-11 6:57, 29-03-2010
30-03-10, 01-04-2010
2012-12-03 05:39:27.040, 12-12-12 17:04
2012-12-04 13:47:01.040, 29-11-12
我希望将它们同质化,并使其中每一列的两列只有“日期”而其他只有“时间”。
我尝试过使用“正则表达式”和“案例” 当我使用“reg表达式”给我空值而“case”给了我“截断不正确的值”。
我试图在网上找到类似的情况。我发现人们遇到了类似的问题,但有两种日期格式并没有像我这么多不同的格式:
我真的很新,我不知道如何在mysql中编写这么多异常。
答案 0 :(得分:0)
将CSV加载到临时表中;按摩该表中的值;最后复制到真实的'表
每个日期在该表中有2列;一个来自CSV的原始值;另一个是DATETIME(3)
(或任何已经消毒的版本)。
针对每种截然不同的格式执行其中一项:
UPDATE tmp SET inDate = ...
WHERE raw_inDate REGEXP '...';
WHERE
可能需要AND LENGTH(inDate) = 8
之类的内容以及除REGEXP以外的其他方式进行测试。
SUBSTRING_INDEX(inDate, '-', ...)
可能是分割日期的便捷功能。
但是,实际上,我宁愿用Perl或其他一些真正的编程语言编写代码。