5 mysql mysqlimport load-data-infile mysql-json
我已经使用mysqlimport很长一段时间了,现在因为mysql 5.7添加了json数据类型支持,我正在尝试使用包含json数据的行的mysqlimport.
以下是使用mysqlimport导入的csv文件中的一行示例:
column_A_value,column_B_value,[{"x":20,"y":"some name"}]
Run Code Online (Sandbox Code Playgroud)
请注意,最后一列类型是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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误: 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
Run Code Online (Sandbox Code Playgroud)
它奏效了!唯一的区别是在日志中,当运行mysqlimport时,也生成了这一行
Query /*!40101 set @@character_set_database=binary */
Run Code Online (Sandbox Code Playgroud)
然后生成了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
Run Code Online (Sandbox Code Playgroud)
但是徒劳,发生了同样的错误.
那么任何线索如何解决这个字符集问题呢?
检查您的字符集配置:
\n\n\n\n\n显示像 \xe2\x80\x98%char%\' 这样的变量;
\n
不响应--default-character-set
可能仍然是 mysqlimport 的错误:\n https://bugs.mysql.com/bug.php?id=29712
可能的解决方案:
\n\nSET NAMES utf8;
导入前尝试一下mysql
with--default-character-set=utf8
代替mysqlimport
my.cnf
:\n\nRun Code Online (Sandbox Code Playgroud)\n[mysqld]\ninit-connect=\'SET NAMES utf8\'\ncharacter-set-server=utf8\ncollation-server=utf8_general_ci\ndefault-character-set=utf8\n\n[client]\ndefault-character-set=utf8\n
归档时间: |
|
查看次数: |
2325 次 |
最近记录: |