5

私は長い間 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

しかし、無駄に、同じエラーが発生しました。

この文字セットの問題を解決する方法の手がかりはありますか?

4

1 に答える 1