【问题标题】:MySQL import from csv file with character exceptionsMySQL 从 csv 文件导入字符异常
【发布时间】:2011-11-10 11:10:36
【问题描述】:

我正在尝试使用以下查询将 CSV 文件导入我的 MySQL 表:

LOAD DATA INFILE 'C:\\machines.csv'
INTO TABLE `machines` 
CHARACTER SET latin1
FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;

但是它给出了以下错误

1406- 第 10334 行的“technicalInfo”列的数据太长

问题似乎在于该行在技术信息列中包含 字符。

是否可以在查询中删除/替换此字符?

(注:显然另一种解决方案是将其从 csv 文件本身中删除。问题是我可能每天多次导入此文件的不同版本,所以我宁愿将其构建到查询中.)

【问题讨论】:

  • 你试过mysqlimport实用程序吗?
  • 将您的character set` 更改为 utf-8` 有帮助吗?
  • @abhinav 谢谢。看起来应该是“utf8”(没有破折号)。

标签: mysql csv import


【解决方案1】:

问题在于 latin1 字符集中没有“⌀”字符,这就是您收到错误的原因。能不能把字符集改成utf8,看看还有没有问题?

[1] MYSQL 错误 1406 详细信息:http://bugs.mysql.com/bug.php?id=18908

【讨论】:

  • 嗯...现在我收到以下错误:1366- Incorrect string value: '\xEF\xBB\xBF0-0...' for columm 'technicalInfo' at row 1
  • 还要检查 machines 表的字符集是 utf8 而不是 latin1
  • 机器表现在设置为 utf8,但我仍然得到同样的错误。
【解决方案2】:

您可以更改或删除该符号,例如-

LOAD DATA INFILE 'C:\\machines.csv'
INTO TABLE `machines` 
CHARACTER SET latin1
FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES
(column1, column2, @var1) -- specify column names here
SET column3 = REPLACE(@var1, '⌀', ''); -- replace it with '!'

【讨论】:

  • 这给了我以下错误:1270- Illegal mix of collations (latin_swedish_ci,IMPLICIT),(utf8_general_ci,COERCIBLE),(utf8_general_ci,COERCIBLE) for operation 'replace'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 2015-05-18
  • 2013-05-17
  • 2013-03-13
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
相关资源
最近更新 更多