我正在将.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;
...会抛出以下错误:
"数据列太长,以及评论'在第63行"
我查看.csv的第63行,以及"评论"长度为115。
create语句似乎正常(使用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解决方案对我来说似乎有点牵强,因为我插入的所有数据(create database语句,create table语句,CSV等等)都是从中提取的另一个允许完全相同行的服务器。我使用了Mysql Workbench来提取creat / 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。
答案 0 :(得分:2)
尝试使用以'\ 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;
这对我来说很完美