我有一些数据保存为txt文件.我将txt文件保存为csv,以便使用我的sql workbench将其导入数据库.我正在做的是以下内容:
LOAD DATA LOCAL INFILE '/path/to/csv/file.csv' INTO TABLE mytable FIELDS TERMINATED BY ',' ENCLOSED BY '"' lines terminated by '\n';
Run Code Online (Sandbox Code Playgroud)
但我的一个专栏是日期,它是作为0000-00-00导入的
如何以良好的方式导入它? 编辑 这是我的csv包含的内容:
id task hoursWorked begindate enddate
0 task1 15 11/17/2012 11/18/2012
1 task2 20 11/18/2012 11/20/2012
2 task3 20 12/4/2012 12/5/2013
3 task4 22 1/5/2013 1/7/2013
Run Code Online (Sandbox Code Playgroud)
fan*_*nts 11
请试试这个:
LOAD DATA LOCAL INFILE '/path/to/csv/file.csv'
INTO TABLE mytable
LINES TERMINATED BY '\n'
(id, task, hoursWorked, @var1, @var2)
SET begindate = STR_TO_DATE(@var1, '%m/%d/%Y'),
enddate = STR_TO_DATE(@var2, '%m/%d/%Y');
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅LOAD DATA和STR_TO_DATE
注意:我删除了FIELDS TERMINATED BY ',' ENCLOSED BY '"'部分,因为我既没有看到,也没有看到"你的CSV.但如果它按照它的方式工作正常,请随意恢复:)
默认日期格式为YYYY-MM-DD:
mysql> SELECT @@date_format;
+---------------+
| @@date_format |
+---------------+
| %Y-%m-%d |
+---------------+
Run Code Online (Sandbox Code Playgroud)
...因此 MySQL 不会将诸如11/17/2012正确日期之类的内容识别出来。理论上,您应该能够更改默认格式,但我不确定它是否可以在会话范围内完成,我不建议为整个服务器更改它。最好自己进行转换。 诀窍是将值插入变量而不是列中。
另外,还有两个问题:
,。假设您的文件使用制表符作为分隔符,完整的命令将是:
LOAD DATA LOCAL INFILE '/path/to/csv/file.csv'
INTO TABLE mytable
FIELDS TERMINATED BY '\t' ENCLOSED BY '"' LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, task, hoursWorked, @tmp_begindate, @tmp_enddate)
SET begindate = STR_TO_DATE(@tmp_begindate, '%m/%d/%Y'),
enddate = STR_TO_DATE(@tmp_enddate, '%m/%d/%Y');
Run Code Online (Sandbox Code Playgroud)
MySQL实际上不允许更改@@date_format:
mysql> SET @@date_format='%d/%m/%Y';
ERROR 1238 (HY000): Variable 'date_format' is a read only variable
Run Code Online (Sandbox Code Playgroud)
此变量未使用。它从 MySQL 5.6.7 开始被弃用,并将在未来的 MySQL 版本中删除。
此外,在日期和时间类型中,我们可以阅读:
MySQL 以标准输出格式检索给定日期或时间类型的值,但它尝试解释您提供的输入值的各种格式(例如,当您指定要分配给日期或与日期或时间类型)。有关日期和时间类型允许的格式的说明,请参阅第 10.1.3 节,“日期和时间文字”。预计您提供有效值。如果您使用其他格式的值,可能会出现不可预测的结果。
尽管 MySQL 尝试以多种格式解释值,但日期部分必须始终按年-月-日顺序给出(例如,'98-09-04'),而不是按月-日-年或日-月-其他地方常用的年份命令(例如,'09-04-98'、'04-09-98')。
| 归档时间: |
|
| 查看次数: |
18755 次 |
| 最近记录: |