Миграция специальных символов

0

Я должен перенести базу данных из Oracle в MySql с миллиардами данных. Я нашел стратегию для создания схемы и получения данных в CSV из Oracle и загрузки данных в MySQL. Я создал CSV файл с разделителем кавычек (") и полем, оканчивающимся запятой (,). Теперь проблема в том, что CSV файл содержит специальный символ, который не будет импортирован в MySql.

Я использую команду:

LOAD DATA LOCAL infile 'C:/Users/NNCP4659/export.csv' INTO TABLE dbk_address_master 
CHARACTER SET utf8 fields terminated BY "," enclosed by '"' lines terminated 
BY "\r\n"(id, country_code,address,city_id,latitude,longitude, 
@is_active,google_address,old_address,building_number,street_name,created_by) 
set is_active=cast(@is_active as signed);

Мои данные похожи на:

4113973,"CHE","167 Bernerstrasse Süd","57066","47.3943271","8.4865849",1,"Bernerstrasse Süd 167, 8048 Zürich, 
Switzerland","167 Bernerstrasse Süd","Y","167","Bernerstrasse Süd","migration"

И ошибка:

ОШИБКА 1300 (HY000): недопустимая строка символов utf8: "167 Bernerstrasse S"

  • 0
    Похоже, ü не закодирован как utf8 . Можете ли вы получить шестнадцатеричный дамп этой линии? Также, пожалуйста, предоставьте SHOW CREATE TABLE dbk_address_master;
  • 0
    Проблема в адресной колонке, которая выглядит следующим образом: address varchar (255) NOT NULL,
Показать ещё 1 комментарий
Теги:
csv
special-characters
character-encoding

1 ответ

1

167 Bernerstrasse S выглядит как усечение 167 Bernerstrasse Süd в первом не-utf8 167 Bernerstrasse Süd.

Вы указали, что входящие данные - utf8 через

 LOAD DATA ... CHARACTER SET utf8 ...

Я пришел к выводу, что входящий файл не закодирован правильно. Вероятно, это latin1, в этом случае гекс будет FC. Предполагая, что это так, вы должны переключиться на

 LOAD DATA ... CHARACTER SET latin1 ...

Неважно, если CHARACTER SET в целевом столбце не является latin1; MySQL перекодирует его в полете.

(В качестве альтернативы вы можете изменить входящие данные на utf8 (hex: C3BC), но это может быть более хлопотно.)

Ссылка: "усечена" в Trouble с символами UTF-8; то, что я вижу, не то, что я храню

(Что касается того, как проверить шестнадцатеричный код или выполнить команду SHOW CREATE TABLE, нам нужно знать, какую ОС вы используете и какие инструменты у вас есть.)

  • 0
    Это сейчас исправлено. Я использовал CHARACTER SET latin1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню