[英]Special character data migration
我必須將數據庫從Oracle遷移到擁有數十億數據的MySql 。 我找到了創建策略並從Oracle獲取CSV數據並將數據加載到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
看起來像第一個非utf8字符的167 Bernerstrasse Süd
的截斷。
您已指定通過傳入數據為utf8
LOAD DATA ... CHARACTER SET utf8 ...
我得出結論,傳入文件的編碼不正確。 可能是latin1,在這種情況下,十六進制將是FC
。 假設是這種情況,您應該切換到
LOAD DATA ... CHARACTER SET latin1 ...
目標列中的CHARACTER SET
是否不是latin1無關緊要; MySQL將在飛行中對其進行轉碼。
(或者,您可以將傳入數據更改為utf8(十六進制: C3BC
,但這可能更麻煩)。
參考: 麻煩中的 “截斷”( 使用UTF-8字符); 我看到的不是我存儲的
(關於如何檢查十六進制或執行SHOW CREATE TABLE
,我們需要知道您使用的是什么操作系統以及可用的工具。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.