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로 바꿔 주었다.
