【问题标题】:LOAD DATA LOCAL INFILE - Invalid utf8mb4 character stringLOAD DATA LOCAL INFILE - 无效的 utf8mb4 字符串
【发布时间】:2018-08-06 16:12:47
【问题描述】:

我正在尝试将this csv 的俄罗斯巨魔推文导入 mysql 数据库。

我正在尝试像这样使用 LOAD DATA LOCAL INFILE:

LOAD DATA LOCAL INFILE
'/path/to/csv/data.csv' 
INTO TABLE
mytable
CHARACTER SET
utf8mb4
FIELDS TERMINATED BY 
','
ENCLOSED BY 
'"'
LINES TERMINATED BY
'\n'
IGNORE 1 LINES;

它似乎适用于一小部分数据,但是当我尝试执行完整的 csv 时,我收到了这个错误:

错误 1300 (HY000):无效的 utf8mb4 字符串:'那些谁 研究历史知道这甚至不被认为是历史'

抛出错误的行是这一行:

4036537452,4MYSQUAD,那些研究历史的人都知道这甚至不被认为是历史,因为它是最近的。 #BlackHistoryMonth [此处省略短链接],United States,English,2/8/2016 23:18,2/8/2016 23:20,4836,2802,1053,,left,0,0,LeftTroll

如果使用 CHARACTER SET latin1,那么它可以正常导入,但我会丢失推文中的表情符号以及俄语推文。

csv 有俄语、德语、瑞典语和表情符号的推文。有没有办法将所有这些都放入我的数据库中?

谢谢,如果我应该在这个问题中包含更多信息,请告诉我。

【问题讨论】:

  • 为什么b\с 有一个反斜杠?这就是麻烦。您需要转义您的输入。
  • 嗯,看起来该特定推文的内容带有反斜杠。也许我可以为导入设置 NO_BACKSLASH_ESCAPES?不确定这是否会产生一些不良后果。
  • Welp,这只是打破了 LINES TERMINATED BY '\n' 部分。也许有一个解决方法。谢谢你让我走上正轨。
  • 尚未测试,但我会尝试转义 \ like mareful 建议,所以任何 \ 都会像 \\ ?

标签: mysql utf8mb4


【解决方案1】:

我最终进行了大量查找/替换,将每个 '\' 替换为 '\\'。

工作就像一个魅力。谢谢,marekful 和 Freddythunder 让我走上了正轨。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 2016-10-25
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多