私は長い間 mysqlimport を問題なく使用してきましたが、mysql 5.7 で json データ型のサポートが追加されたため、json データを含む行で mysqlimport を使用しようとしています。
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 の代わりに生成されたものを使用すると、問題なく機能しました。mysqllogを開き、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
しかし、無駄に、同じエラーが発生しました。
この文字セットの問題を解決する方法の手がかりはありますか?