mysql에서 Redshift로 유니 코드 데이터로드가 "잘못된 UTF8 16 진수 시퀀스"와 함께 실패 함

jpavs

Python을 사용하여 MySQL에서 Redshift로 간단한 테이블 복제기를 만들려고합니다. 이 작업을 수행하는 방법은 MySQL에서 테이블을 쿼리하고 Python (2.7)을 사용하여 CSV에 출력을 작성한 다음 S3로 전송하고 각각의 대상 테이블에 COPY를 수행하는 것입니다.

유니 코드 문자에 문제가 있습니다. 특히 다음과 같은 오류가 발생합니다.

String contains invalid or unsupported UTF8 codepoints. Bad UTF8 hex sequence: e9 20 50 (error 4)

내 질문은 이것이 파이썬 문제인지 S3 / Redshift 문제인지입니다. 다음은 내가 파이썬에서하는 일입니다.

import unicodecsv as csv

csv_writer = csv.writer(dest, encoding='utf-8')
for index,line in enumerate(a):
    if index == len(a)/2:
        file_ext+=1
        if dest: dest.close()
        dest = open(config['data_dir'] + directory + '/' + table_name + '.txt.' + str(file_ext), 'wb')
        csv_writer = csv.writer(dest, encoding='utf-8')
    csv_writer.writerow(line)

그래서 내가 이해하는 바에 따르면 파이썬은 올바르게 작성하고 있습니다. 실제로, VI에서 CSV를 열면 다음과 같은 것을 볼 수 있습니다. "Fjällräven Canvas Black Kanken 15\ Laptop Bag"""나에게 옳은 것 같습니다 (\ 및 extra "는 소스에서 정크입니다). 그러나 csv에 대해 파일을 실행하면 다음과 같은 결과가 나타납니다 ASCII text, with very long lines, with CRLF line terminators. 파일을 S3로 이동하고 복사본을 실행하면 위의 Redshift COPY 오류가 발생합니다.

그래서 다시 질문으로 돌아갑니다. 이것은 파일 이 인코딩 되는 방식과 관련이 있다고 생각 합니다. 그 안에있는 콘텐츠가 아니라 내 검색을 통해 그에 대한 확실한 것을 찾을 수 없었습니다. 누구든지 이것을 만났고 해결책을 찾았습니까? 도와 주셔서 감사합니다

jpavs

위에서 보여준 모든 것이 괜찮 았지만 MySQL은 UTF-8 문자를 내 보내지 않았습니다. 내 연결 문자열에 다음 두 줄을 추가하여 수정되었습니다.

'use_unicode' : True,
'charset':'utf8'

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관