Я использую mysqlimport без проблем в течение длительного времени, теперь, когда mysql 5.7 добавлена поддержка типа данных json, я пытаюсь использовать mysqlimport со строками, содержащими json данные.mysqlimport issues "set @@ character_set_database = binary", который предотвращает загрузку 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
, но напрасно, произошло та же ошибка.
Так какой-нибудь ключ, как решить этот набор символов, пожалуйста?
Ни один из вышеперечисленных предложений не работал для меня. Обратите внимание, что в MYSQL версии 5 или выше вам нужно будет использовать разные значения для установки кодировки по умолчанию, поскольку они не рекомендуют это. Примеры здесь: http://outofcontrol.ca/blog/comments/change-mysql-5.5-default-character-set-to-utf8 –
Использование 'mysql' должно работать. Что касается 'my.cnf', кажется, что' init-connect' и 'default-character-set' больше не принадлежат разделу' [mysqld] '. –