首页 > 解决方案 > MySQL LOAD DATA INFILE csv 列数据与换行符

问题描述

我想将 CSV 数据导入 MySQL 数据库,下面是我的 CSV 文件的示例行数据:

"9C5435D89FCA5E19E0532107A8C074BD","12341234","20180411 163616","ABC","12341234;Testing data.
TestingData.","1"

如您所见,第 5 列有换行符(Unix EOL,即 LF),当我导入它时,我得到了ERROR 1261 (01000): Row 2 doesn't contain data for all columns 下面是我的LOAD DATA INFILE

LOAD DATA INFILE '/opt/mysql/files/table.csv'  
INTO TABLE table
FIELDS TERMINATED BY ','  
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(@uuid,col2,@date,col4,col5,col6) 
SET col1= UUID_TO_BIN(@uuid),col4 = STR_TO_DATE(@date, '%Y%c%d %H%i%s');

我试图设置LINES TERMINATED BY '\r\n',但又出现了一个错误ERROR 1406 (22001): Data too long for column 'col6' at row 1

我已经指定了ENCLOSED BY '"',这不应该防止我现在面临的问题吗?虽然有换行符,但还是用 括起来"",MySQL 应该把它当作列数据而不是新行数据不是吗?

有没有办法解决这个问题?我无法更改 CSV 数据,因为数据中包含换行符。table.csv使用spool命令从 Oracle DB 导出。

标签: mysqlload-data-infile

解决方案


推荐阅读