【发布时间】:2016-07-10 18:03:19
【问题描述】:
我已经使用mysqlimport很长时间了,现在随着mysql 5.7添加了json数据类型支持,我正在尝试将mysqlimport与包含json数据的行一起使用。
以下是 csv 文件中将使用 mysqlimport 导入的行的示例:
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
但徒劳无功,发生了同样的错误。
请问有什么办法解决这个字符集问题吗?
【问题讨论】:
标签: mysql load-data-infile mysqlimport mysql-json