csv 파일 벌크 업데이트 시 invaild or unsupported UTF8 오류 발생

·2023년 5월 31일
0

TROUBLE SHOOTING

목록 보기
5/5

⚡ 발생한 문제

csv 파일을 Redshift 환경에 다음과 같은 COPY 명령어를 통해 벌크 업데이트 해 주었다.

COPY RAW_DATA.CODE_DETAIL
FROM 's3://tour-dashboard-4-2/csv_data/CODE_DETAIL.csv'
credentials 'aws_iam_role=arn:aws:iam::433690009634:role/redshift.read.s3'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1 removequotes

에러가 발생하였고 에러에서는 sys_load_error_detail 테이블을 조회하라고 안내해 주었다.
해당 테이블이 Redshift 내에서 에러 로그를 쌓아 주는 테이블로 보였다.

SELECT *
  FROM SYS_LOAD_ERROR_DETAIL;

다음과 같은 명령어를 통해 조회하니 에러 목록이 떴다.

모두 동일한 오류였고 오류 메시지는 다음과 같았다.
String contains invalid or unsupported UTF8 codepoints. Bad UTF8 hex sequence: bc (error 3)
UTF8 파일이 유효하지 않거나 지원하지 않는 형식이라는 안내 문구였다. 인코딩 형식이 잘못됐다는 것을 인지했다.



🔑 해결 방법

인코딩 형식이 잘못된 건 맞는 것 같았지만 조금 확실히 하기 위해 COPY 명령어 뒤에 다음과 같은 옵션을 붙여 주었다.
ACCEPTINVCHARS ESCAPE

  • 먼저 ACCEPTINVCHARS는 데이터베이스나 데이터 로드 도구에서 사용되는 옵션으로 유효하지 않은 문자가 포함된 옵션을 어떻게 처리할지를 지정해 준다.
  • ESCAPE데이터의 특정 문자를 특수한 의미로 해석되지 않도록 처리하거나 말 그대로 그냥 이스케이프(ESCAPE) 지나가는 것이다.
    이를 COPY 명령어 뒤에 옵션으로 주어 유효하지 않은 문자가 포함된 옵션이 나오면 지나가도록 처리해 주고 다시 실행해 주었다.
COPY RAW_DATA.CODE_DETAIL
FROM 's3://tour-dashboard-4-2/csv_data/CODE_DETAIL.csv'
credentials 'aws_iam_role=arn:aws:iam::433690009634:role/redshift.read.s3'
delimiter ',' dateformat 'auto' timeformat 'auto' IGNOREHEADER 1 removequotes ACCEPTINVCHARS ESCAPE;

한글로 된 데이터들이 다 깨져서 나오는 것을 볼 수 있었다. 해당 인코딩 형식이 잘못된 것 같아 메모장을 통해 인코딩 형식을 UTF-8로 바꿔 주었다.

  • 그 이후 다음과 같이 한글 깨짐 없이 데이터가 잘 적재된 것을 볼 수 있었다.
profile
송의 개발 LOG

0개의 댓글