簡體   English   中英

特殊字符數據遷移

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM