2017-02-03 1 views
3

일부 데이터를 MSSQL에서 MySQL로 이동하려고합니다.MySQL 데이터 마이그레이션 - wbcopytables charset

Incorrect string value: '\xF0\x9F\x8C\xA8\xE2\x98...' for column 'Value' at row 4 

내 서버, 데이터베이스, 테이블 및 열 charset=utf8mb4을 가지고 : 나는 wbcopytables.exe를 실행 해요 때 MySQL의 연결에 캐릭터 세트가 잘못된 것 같다, 나는 데이터가 이모티콘 아이콘을 포함하는 오류 (http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%8C%A8%E2%98%83%EF%B8%8F)를 받고 있어요 collation=utf8mb4_unicode_ci. 그러나 나는 으로 만들 수 있습니다. 이모티콘 아이콘을 옆에 만든 .NET 응용 프로그램과 함께 표에 삽입하면 스키마/서버 설정 문제가 아닙니다. 이것은 내게 wbcopytables.exe이 다른 인코딩 (아마도 utf8)을 연결에 적용하고 있다고 생각하게 만듭니다.

[mysqld] 
character-set-server=utf8mb4 
collation-server=utf8mb4_unicode_ci 
init_connect='SET collation_connection = utf8mb4_unicode_ci' 
skip-character-set-client-handshake 

편집 : 나는 my.ini 파일에이 다른 SO 질문에 제안 utf8mb4을 적용 할 모든 MySQL의 변수를 변경하려 https://dev.mysql.com/doc/workbench/en/wbcopytables.html

+0

누가'wbcopytables'를 소유합니까? 그것을위한 문서는 어디에 있습니까? –

+0

질문을 업데이트했습니다. 'wbcopytables.exe'는 MySQL Workbench와 함께 제공되는 CMD 유틸리티입니다. – andy250

+0

.NET 응용 프로그램은 원본 데이터가 올바르게 인코딩되었다는 유일한 증거입니까? 적어도'NVARCHAR' 열을 사용하고 SQL Server 연결 인코딩을 유니 코드로 설정합니까? –

답변

0

I : 여기에 wbcopytables.exe 자체에 대한 자세한 정보는 유사한 문제가 있었지만 소스 데이터베이스에 latin1 인코딩이 있지만 응용 프로그램에서 UTF8 데이터를 사용할 수있었습니다. 말할 필요도없이 이것이 문제를 일으켰습니다. 원본 데이터베이스에서 CSV로 데이터를 내 보낸 다음 LOAD DATA LOCAL INFILE 대신 문자 인코딩을 지정해야했습니다. 예 : 이 모든 이제 다음 행이 |'있을 것입니다, 그렇게 말한다면, 데이터에 나타날 가능성이 적습니다 나는이 이스케이프 문자로 파이프 문자 |을 사용

load data local infile 
'C:\\SentryLink Search\\Git\\WebApp\\sql\\data_subject_address_clean.csv' 
replace into table subject_address 
character set latin1 
fields terminated by ',' OPTIONALLY ENCLOSED BY '\'' 
escaped by '|' 
lines terminated by '\n'; 

주 그래서 prelimimary 단계 하나를 얻을 수 있었다으로 grep 또는 유사한 명령을 사용하여 해당 행을 제거하거나 편집 할 수 있습니다.

나는 그것이 재미 있다고 말할 수는 없지만 작동한다.