Я давно использую 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 и проверил сгенерированную команду LOAD DATA IN FILE при запуске mysqlimport, затем скопировал и вставил ее, и она работала без проблем! Я запустил что-то вроде:
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
но зря, такая же ошибка случилась.
Итак, подскажите, как решить эту проблему с набором символов, пожалуйста?