【问题标题】:mysql load data infile it contain more data than there were input columnmysql load data infile 它包含比输入列更多的数据
【发布时间】:2017-08-15 11:15:56
【问题描述】:

我是 mysql 新手,我尝试将 csv 文件加载到 mysql。 csv 之类的:

1,"a,b"
2,bc
3,d

这样的表格:

create table test(ind varchar(10),var varchar(20));

当我加载这个 csv 文件时:

load data infile 'test.csv' into table test
fields terminated by ',' ;

我改变这个 警告:

第 1 行被截断:它包含的数据多于输入列 我试试这个:

load data infile 'test.csv' into table test
fields terminated by ','
optionally enclosed by '"'

它不起作用。

"a,b" 的共同点会导致此错误。但我不知道如何解决这个问题。

【问题讨论】:

  • it doesn't work ... 第二次尝试使用OPTIONALLY ENCLOSED BY '"' 发生了什么?
  • @TimBiegeleisen 是的,当我添加可选用 ' " ' 括起来时,ind 列仅包含 1,var 列包含 "a,b" 2,bc 3,d
  • 我认为 LOAD DATA 出于某种原因没有看到您的换行符。我在下面给了你一个建议。

标签: mysql csv


【解决方案1】:

听起来LOAD DATA 可能没有正确理解您的换行符。尝试将LINES TERMINATED BY ... 添加到您的通话中:

LOAD DATA INFILE 'test.csv' INTO TABLE test
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'         -- use '\n' if on Linux
(ind, var)

通过上述调用,MySQL 不应将第一个引用术语 "a,b" 内的逗号视为字段分隔符,而应仅将其视为该列文本的一部分。

【讨论】:

  • 我在将 CSV 从我的 Windows 机器加载到在 Linux 上运行的 MySQL 实例时遇到了这个问题。从来没有想过换行,谢谢...
  • 这对我来说非常有效。非常感谢,您拯救了这一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 2012-10-05
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多