我有一个 csv 文件,其中包含一些位于 Unicode BMP 之外的字符,例如字符. 它们是 SMP 字符,因此它们需要存储在 MySQL 中的 charset 和 collation 中,而不是
utf8mb4
charset和collation 中。utf8mb4_general_ci
utf8
utf8_general_ci
所以这是我的 SQL 查询。
MariaDB [tweets]> 设置名称“utf8mb4”; 查询正常,0 行受影响(0.01 秒) MariaDB [tweets]> create table test (a text) collate utf8mb4_general_ci; 查询正常,0 行受影响(0.06 秒) MariaDB [tweets]> 插入测试 (a) 值 (''); 查询正常,1 行受影响(0.03 秒) MariaDB [tweets]> 从测试中选择 *; +------+ | 一个 | +------+ | | +------+ 一组中的 1 行(0.00 秒)
没有警告。一切都是对的。现在我想加载那个 csv 文件。对于测试,该文件只有一行。
MariaDB [tweets]> 将数据本地 infile 't.csv' 加载到表 wzyboy 字符集 utf8mb4 字段中,以 ',' 结尾,由 '"' 括起来,以 '\n\n' 结尾 (tweet_id,in_reply_to_status_id,in_reply_to_user_id,retweeted_status_id,retweeted_status_user_id ,时间戳,来源,文本,expanded_urls); 查询正常,1 行受影响,7 个警告(0.01 秒) 记录:1 删除:0 跳过:0 警告:7
警告信息是:
| 警告 | 第1366章 不正确的字符串值:第 1 行的列 'text' 的 '\xF0\x9F\x80\x80' |
我所有的工作环境(操作系统、Termianl 等)都使用 UTF-8。我已经utf8mb4
在我能想到的每个地方都指定了,如果我手动INSERT INTO
它就可以了。但是,当我使用LOAD DATA INFILE [...] CHARACTER SET utf8mb4 [...]
它时,它会因错误“字符串值不正确”而失败。