Я должен перенести базу данных из 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"
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
, нам нужно знать, какую ОС вы используете и какие инструменты у вас есть.)
ü
не закодирован какutf8
. Можете ли вы получить шестнадцатеричный дамп этой линии? Также, пожалуйста, предоставьтеSHOW CREATE TABLE dbk_address_master;
address
varchar (255) NOT NULL,