我一直在使用 mysqlimport 很长时间没有问题,现在由于 mysql 5.7 添加了 json 数据类型支持,我正在尝试将 mysqlimport 与包含 json 数据的行一起使用。
这是将使用 mysqlimport 导入的 csv 文件中的一行示例:
column_A_value,column_B_value,[{"x":20,"y":"some name"}]
请注意,最后一列类型是 json。现在使用mysqlimport时如下:
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' some_db /path/to/products.txt
我收到以下错误:Cannot create a JSON value from a string with CHARACTER SET 'binary'., when using table: products
但是使用生成的LOAD DATA IN FILE
而不是 mysqlimport 没有问题!我打开mysql日志,检查运行mysqlimport时生成的LOAD DATA IN FILE命令,然后复制粘贴,运行没有问题!我跑了类似的东西:
LOAD DATA LOCAL INFILE '/path/to/products.txt'
INTO TABLE products
它奏效了!唯一的区别是在日志中,运行 mysqlimport 时也生成了这一行
Query /*!40101 set @@character_set_database=binary */
然后生成了 LOAD DATA IN FILE 命令,因此该行是问题的根源。
所以无论如何我尝试将字符集设置为utf8,
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' --default-character-set=utf8 some_db /path/to/products.txt
但徒劳无功,发生了同样的错误。
那么有什么线索可以解决这个字符集问题吗?