2013-03-14 2 views
0

this Hungarian text file을 MySQL 테이블로 가져 오려고하는데 헝가리어 문자가 항상 손상되었습니다. 가져 오기 파일과 테이블 모두에서 올바른 조합을 찾지 못해 많은 인코딩을 시도했습니다.이 파일을 MySQL로 어떻게 가져 옵니까?

파일 형식은 한 줄에 하나의 숫자이며 공백으로 구분됩니다. 내 가져 오기 테이블에는 두 개의 열, varchar 및 정수가 있습니다. MySQL 5.5.16 및 phpMyAdmin 3.4.5를 사용하고 있습니다. phpMyAdmin 솔루션을 선호하지만 필요한 경우 명령 줄을 사용할 수 있습니다.

미리 감사드립니다.

편집 : 고정

+0

위에서 언급 한 [SO 솔루션] (http://stackoverflow.com/questions/2763770/export-and-import-utf8-data-in-mysql-best-practices) –

+0

고맙습니다.하지만 고맙습니다. 도움이 안돼. 나는 UTF-8의 많은 맛을 시도했다. –

+1

** 더 많은 정보 필요 ** "* 문자는 항상 손상됨 *"이란 무엇을 의미합니까? 어떻게 파일을 가져 오려고합니까? mysqlimport? 'LOAD DATA'? 응용 프로그램 코드를 파싱 한 다음 INSERT를 호출합니까? phpMyAdmin을 통해 가져올 때 "파일의 문자 세트"를 지정하는 드롭 다운 메뉴가 있습니다. 올바르게 설정 했습니까? 텍스트가 삽입되는 열의 문자 집합은 무엇입니까? 검색 중에가 아니라 삽입하는 동안 부패가 발생했다고 어떻게 결정 했습니까? – eggyal

답변

1

파일이 UTF-8로 인코딩 것으로 보인다 가변 시스템을 character_set_database 무시할 수

또한 파일의 인코딩으로 설정되어 LOAD 데이터 INFILE의 캐릭터 SET 절을 보장합니다. 예를 들어 :

 
$ unzip -p hu_50K.zip | sed -n 59p | xxd 
0000000: 6bc3 b673 7ac3 b66e c3b6 6d20 3532 3030 k..sz..n..m 5200 
0000010: 310d 0a         1.. 

나는 "köszönöm"는 "당신에게 감사합니다"헝가리 것을 이해합니다. 파일의 행 59에 들어있는 문자가 있다면 ö 문자 (U + 00F6)는 0xc3b6, which is UTF-8로 인코딩됩니다. -이 반드시도 UTF-8로 인코딩 할 경우 물론

LOAD DATA [LOCAL] INFILE '/path/to/hu_50K.txt' 
    INTO TABLE my_table 
    CHARACTER SET utf8 
    FIELDS 
     TERMINATED BY ' ' 
    LINES 
     TERMINATED BY '\r\n' 
    (col_word, col_number) 

, col_word가 문자를 개최 할 수 있어야합니다

LOAD DATA INFILE를 사용하여이 파일을 가져옵니다.

+0

대단히 감사합니다! 솔루션을 시도하기 전에 가져 오기 테이블에서 단어 열을 정의하는 방법을 권장 할 수 있습니까? 내가 사용하는 데이터 정렬 또는 다른 속성이 중요합니까? –

+0

그것은 효과가있다. 고맙습니다! 솔직히 phpMyAdmin에서 가져 오기 플러그인에 문제가 있다고 생각합니다. 이미 UTF-8로 시도했기 때문입니다. 이제부터는 가져 오기에 명령 줄을 사용합니다. 다시 한 번 감사드립니다! (그리고 다시!) –

0

위 깨진 링크이가 당신이 load data infile를 사용하여 MySQL의에로드하려면이 파일을 사용할 수 있습니다 완료되면 UTF-8

import codecs 
import commands 
f_loc = "my.file" 
f_enc = commands.getoutput('file -b --mime-encoding %s' % f_loc) 
f_stream = codecs.open(f_loc, 'r', f_enc) 
f_out = codecs.open(f_loc+"b", 'w', 'utf-8') 
for l in f_stream: 
    f_output.write(l) 
f_stream.close() 
f_out.close() 

에 파일을 변환하려면이 해결 방법을 시도해보십시오. 이

+0

그 언어는 무엇입니까? –

+0

코드는 파이썬으로되어 있습니다. –

관련 문제