我正在从 csv 文件将 1m+ 条记录导入我的表中。使用 load data local infile 方法效果很好。
但是,日期都是不同的格式。一个快速的谷歌引导我到这个功能:
STR_TO_DATE
但是,当我实现它时,我什么也得不到,一个空的插入。这是我的 SQ 缩减为包括一个日期(我有 4 个有相同问题)和通用列名:
load data local infile 'myfile.csv' into table `mytable`
fields terminated by '\t'
lines terminated by '\n'
IGNORE 1 LINES
( `column name 1`
, `my second column`
, @temp_date
, `final column`)
SET `Get Date` = STR_TO_DATE(@temp_date, '%c/%e/%Y')
如果我做:
SET `Get Date` = @temp_date
csv 中的日期以文件中的格式捕获。但是,当我尝试第一种方法时,我的表格列是空的。我已将列类型从时间戳更改为 varchar (255) 以捕获正在发生的任何事情,但最终,我想捕获 ymd H:i:s (不确定 STR_TO_DATE 是否可以做到这一点?)
我也不确定为什么我需要@符号..谷歌在那里让我失望了。
所以,我的问题是:
- 为什么我需要 @ 符号才能使用此功能?
- 数据格式('%c/%e/%Y')应该是输入数据的格式还是我想要的输出格式?
- 我也可以这样记录时间吗?
对不起这个大帖子!
现在回到谷歌...