mysql - 加载数据文件(来自 csv): data too long for column 'xxx' at row N

标签 mysql csv

我像这样将 .csv 导入 Mysql:

LOAD DATA INFILE '(...)/contact_acquisition.csv'
INTO TABLE rs_ui_db.contact_acquisition
CHARACTER SET utf8
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;  

...抛出以下错误:

"Data too long for column 'comments' at row 63"

我查看 .csv 的第 63 行,“comments”的长度为 115。

创建语句似乎没问题(带有 comments char(255)):

CREATE DATABASE IF NOT EXISTS `my_db` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `my_db`;

DROP TABLE IF EXISTS `contact_acquisition`;
CREATE TABLE `contact_acquisition` (
  `SID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `pilot` char(255) NOT NULL,
  `contact` char(255) NOT NULL,
  `email` char(255) NOT NULL,
  `tel` char(255) NOT NULL,
  `comments` char(255) NOT NULL,
  PRIMARY KEY (`SID`)
) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8; 

在将其标记为重复之前,请注意:

This StackOverflow 解决方案显然不适合:我已经将 CHARACTER SET utf8 添加到 LOAD DATA sql。

This其他 StackOverflow 解决方案对我来说似乎有点牵强,因为我插入的所有数据(创建数据库语句、创建表语句、CSV 等)都是从另一台服务器中提取的,其中完全相同的行被允许。我使用 Mysql Workbench 来提取 creates/csv 等。

我正在尝试从一台服务器自动导出到另一台服务器,因此更改目标中的数据类型对我来说不是一个选项。


更新:

这是一行(经过混淆,但保留了非字母数字字符):

64,xxxx xxxx,"xxxx xxxx, xxxx xxxx","xxxx.xxxx@xxxx.xxxx, xxxx.xxxx@xxxx-xxxx.xxxx.xxxx",xxxx (xxxx) xxxx xxxx xxxx xxxx xxxx (xxxx),"xxxx xxxx xxxx'xxxx xxxx xxxx xxxx xxxx xxxx xxxx, xxxx xxxx xxxx'xxxx xxxx xxxx'xxxx xxxx xxxx xxxx xxxx"

MySQL 提示的部分是:"xxxx xxxx xxxx'xxxx xxxx xxxx xxxx xxxx xxxx xxxx, xxxx xxxx xxxx'xxxx xxxx xxxx'xxxx xxxx xxxx xxxx xxxx"。由 " 包裹,包含 1 个逗号和 3 个 '。正确导入的其他行(来自同一 CSV)也有这些字符。长度似乎是仅与其他线路不同。

csv 文件是 utf8 格式。

最佳答案

尝试使用 LINES TERMINATED BY '\r\n'

LOAD DATA INFILE '(...)/contact_acquisition.csv'
INTO TABLE rs_ui_db.contact_acquisition
CHARACTER SET utf8
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;

这很适合我

关于mysql - 加载数据文件(来自 csv): data too long for column 'xxx' at row N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39870686/

上一篇:Mysql加减查询

下一篇:MySQL游标获取空值

相关文章:

mysql - 需要一个 MySQL JOIN 来返回产品所属的所有类别,每个产品,即使只搜索一个类别

mysql - SQL - 获取一个月的新事件计数并仅显示增加的值

用于获取文件夹的文件名和文件大小的 csv 文件的 Powershell 脚本

java - jmeter中如何实现csv文件的多个http请求?

MYSQL LOAD DATA INFILE 忽略重复行(自增为主键)

mysql - 在单个查询中获取不同日期范围的多列计数

php - php 中的搜索查询

php - 具有多个 Mysql 结果的交替 CSS 样式

java - 如何在CSV解析后根据一定的规则连接字符串 - 逐行

csv - 如何在 Jaspersoft Server 中使用 csv 作为数据源?