2011-02-10 2 views
18

MySQL 테이블에로드 할 큰 CSV 파일이 있습니다. 그러나 이러한 데이터는 영어 이외의 문자가 포함되어 있기 때문에 utf-8 형식으로 인코딩됩니다. 이미 테이블의 해당 열의 문자 집합을 utf-8로 설정했습니다. 하지만 내 파일을로드 할 때. 비 영어 문자가 이상한 문자로 바뀝니다 (테이블 행을 선택할 때). 테이블에 데이터를로드하기 전에 데이터를 인코딩해야합니까? 그렇다면 어떻게 할 수 있습니까? 파이썬을 사용하여 데이터를로드하고 LOAD DATA LOCAL INFILE 명령을 사용하고 있습니다. 당신은 보내야 감사utf-8로 인코딩 된 텍스트를 MySQL 테이블에로드하기

http://dev.mysql.com/doc/refman/5.1/en/load-data.html에서 말했듯이

답변

13

, 당신이 당신의 CSV가 사용하는 문자 집합은 "문자 집합"LOAD 데이터의 선택적 매개 변수 LOCAL INFILE

2

로 파일을 지정할 수 있습니다

init_command = 'SET NAMES UTF8' 
use_unicode = True 
charset = 'utf8' 

MySQLdb.connect() 예를 들어

dbconfig = {} 
dbconfig['host']   = 'localhost' 
dbconfig['user']   = '' 
dbconfig['passwd']   = '' 
dbconfig['db']    = '' 
dbconfig['init_command'] = 'SET NAMES UTF8' 
dbconfig['use_unicode']  = True 
dbconfig['charset']   = 'utf8' 

conn = MySQLdb.connect(**dbconfig) 

편집 : 아, 미안 해요, 내가 볼 당신이 "LOAD 데이터 LOCAL INFILE"를 사용하고 있는지 추가 한 -

62

을보십시오이 초기 질문 :)에서 명확하지 않았다
+5

이 대답이되어야합니다. – memical

+0

"CHARACTER SET UTF8"을 추가하는 것이 핵심이었습니다! – nemnesic

+0

아, 내게 너무 오래 걸렸어. 모든 것을 시도했지만, 그냥 utf8을 latin으로 변환하고 utf 8 테이블로 가져 왔습니다. 인코딩 옵션이 이상하게 작동했습니다. – John

2

파일에 문자를 인코딩 할 필요는 없지만이 파일을 데이터베이스에로드하기 전에 파일이 UTF-8로 인코딩되었는지 확인해야합니다.

관련 문제