MySql 加载文件 STR_TO_DATE 中的数据返回空白?

标签 mysql csv

我正在将超过 100 万条记录从 csv 文件导入到我的表中。 使用加载数据本地 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) 以捕获发生的任何事情,但最终,我想捕获 y-m-d H:i:s(不确定 STR_TO_DATE 是否可以做到这一点?)

我也不确定为什么我需要 @ 符号..谷歌让我失望了。

所以,我的问题是:

  1. 为什么需要@符号才能使用此功能?
  2. 数据格式('%c/%e/%Y')应该是输入数据的格式还是我想要的输出格式?
  3. 我也可以用这种方式捕捉时间吗?

抱歉发了这么大的帖子!

现在回到谷歌...

最佳答案

为什么我需要@符号才能使用这个功能?

@ 符号表示您正在使用一个变量,因此读取的字符串不会立即放入表中,而是放入一个内存块中,以便您在插入它之前对其进行操作。更多信息在 http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

数据格式('%c/%e/%Y')应该是输入数据的格式还是我想要的输出?

它是输入数据的格式,更多信息在http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

我也可以用这种方式捕捉时间吗?

只要你选择了正确的格式,你应该可以,比如

STR_TO_DATE(@temp_date,'%c/%e/%Y %h:%i:%s');

关于MySql 加载文件 STR_TO_DATE 中的数据返回空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696934/

相关文章:

mysql - Solr 数据导入处理程序 cacheImpl 不检索行

mysql - 学习 SQL 查询不能正常工作

java - Spring 数据休息:How to select specific field from the repository

python - 使用 python 合并两个电子表格 - 新工作表中的列源在源文件之间交替

python - 从 csv 文件读取数据时查找列表的累积和

php - 我们怎样才能只选择服务器数据库中的某些列并制作csv文件或excel文件?

具有多个字段的多个关键字的 Php MySql 查询

java - 如何在文件的声明路径中使用参数名称 - java

linux - 从 Linux 'ps' 生成 CSV 列表

python - 如何在 Pandas 中读取带有引号字符和逗号的 CSV 文件?