我一直在使用mysqlimport沒有問題很長一段時間,現在作爲MySQL 5.7添加json數據類型的支持,我試圖使用mysqlimport的行包含json數據。mysqlimport問題「設置@@ character_set_database =二進制」,它可以防止加載json值
這裏是CSV文件中的一行,將使用的mysqlimport導入的示例:
column_A_value,column_B_value,[{"x":20,"y":"some name"}]
注意,最後一列類型是JSON。現在,當使用的mysqlimport如下所示:使用產生的LOAD DATA IN FILE
代替mysqlimport的工作沒有問題Cannot create a JSON value from a string with CHARACTER SET 'binary'., when using table: products
但是:
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' some_db /path/to/products.txt
我得到了下面的錯誤!我在運行mysqlimport時打開mysql日誌並檢查了生成的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這條線,從而使線是問題的根源。
所以無論如何我試着設置字符集爲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版本5或更高版本中,您將需要使用不同的值來設置默認字符集,因爲它們已被棄用。這方面的例子:http://outofcontrol.ca/blog/comments/change-mysql-5.5-default-character-set-to-utf8 –
使用'mysql'should合作。至於'my.cnf',似乎'init-connect'和'default-character-set'不再屬於'[mysqld]'部分。 –