mysql - 日期列(数据类型 -timestamp)未从 csv 正确导入到 MySql

标签 mysql csv

我正在尝试使用 LOAD DATA LOCAL INFILE 将数据从 csv 文件导入 MySQL。除以时间戳作为数据类型的日期列外,所有列均已正确导入。我收到错误 1265: data truncated for date columns 并为所有值插入 0000-00-00 00:00:00。之前已询问过此问题,但我没有找到完美的解决方案。我还尝试了针对此类问题发布的各种解决方案,但没有一个对我有用。

表创建语句:

CREATE TABLE MySchema.response
(
`id` int,
`version` int,
`name` varchar(500), 
`date_created` timestamp,
`last_updated` timestamp, 
`count` int,
);

将数据加载到表中:

LOAD DATA LOCAL INFILE 'C:/response.csv' 
INTO TABLE MySchema.response
FIELDS TERMINATED BY ',' optionally ENCLOSED by '"' 
ignore 1 lines

CSV 文件中的示例数据

id 版本名称 date_created last_updated 计数
1, 0, xyz, 5/3/2013 1:18, 5/3/2013 1:18, 2
2, 0, abc, 5/3/2013 1:18, 5/3/2013 1:18, 1

最佳答案

示例中的日期列不是 MySQL 的默认格式,因此不会被识别为日期。您需要尝试类似以下的操作,以便说明应如何解释日期:

LOAD DATA LOCAL INFILE 'C:/response.csv' 
INTO TABLE MySchema.response
FIELDS TERMINATED BY ',' optionally ENCLOSED by '"' 
IGNORE 1 lines
(id, version, name, @date_created, @last_updated, count)
SET date_created = STR_TO_DATE(@date_created, '%d/%c/%Y %k:%i'),
last_updated = STR_TO_DATE(@last_updated, '%d/%c/%Y %k:%i');

检查MySQL date format documentation适合您情况的说明符(可能是我在上面示例中添加的说明符)。

关于mysql - 日期列(数据类型 -timestamp)未从 csv 正确导入到 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820308/

相关文章:

mysql - Django 查询集复杂查找

android - 对一张表进行简单的 SQL 查询

python - 根据从 csv 文件中提取的值创建复杂的嵌套字典。 - Python

javascript - knockout 变更事件函数

php - 在 MySql 表行中插入整个 CSV 文件

mysql - 使用 Lua 的多客户端 Copas 服务器

mysql - MySQL 中的 BLOB 类型

mysql - 使用 Join 表获取总和

c# - 从 .NET Core Controller 返回 CSV

java - 使用随机行顺序测试 csv 文件是否相等 (Junit)