【发布时间】: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 建议,所以任何 \ 都会像 \\ ?