STL_LOADERROR_DETAIL
COPY 명령을 사용해 테이블에 로드할 때 발생한 데이터 구문 분석 오류의 로그를 표시합니다. 디스크 공간을 절약할 수 있도록 각 로드 작업마다 노드 조각 1개당 최대 20개의 오류가 기록됩니다.
구문 분석 오류는 Amazon Redshift가 데이터를 테이블에 로드하면서 데이터 행의 필드 구문을 분석할 수 없을 때 발생합니다. 예를 들어 테이블 열에는 정수 데이터 형식이 필요한데 데이터 파일의 해당 필드에는 문자열이 포함되어 있으면 구문 분석 오류가 발생합니다.
구문 분석 오류가 발생한 경우 STL_LOAD_ERRORS에 대한 쿼리를 실행하여 오류에 대한 일반 정보를 확인한 이후에도 정확한 데이터 행과 열 등을 포함하여 그 밖의 세부 정보를 알고 싶다면 STL_LOADERROR_DETAIL에 대한 쿼리를 실행하십시오.
STL_LOADERROR_DETAIL 뷰에는 구문 분석 오류가 발생한 열을 포함하여 그 전의 모든 데이터 열이 포함됩니다. VALUE 필드에서는 정확히 오류까지 구문 분석된 열을 포함하여 이 열에서 실제로 구문 분석된 데이터 값을 확인할 수 있습니다.
이 뷰는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.
참고
STL_LOADERROR_DETAIL에는 기본 클러스터에서 실행되는 쿼리만 포함됩니다. 동시성 조정 클러스터에서 실행되는 쿼리는 포함되지 않습니다. 기본 및 동시성 조정 클러스터 모두에서 실행되는 쿼리에 액세스하려면 SYS 모니터링 뷰인 SYS_LOAD_ERROR_DETAIL을 사용하는 것이 좋습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
userid | 정수 | 항목을 생성한 사용자의 ID. |
slice | 정수 | 오류가 발생한 조각 |
session | 정수 | 로드 실행 세션의 세션 ID |
쿼리 | 정수 | 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다. |
filename | character(256) | 로드할 입력 파일의 전체 경로 |
line_number | bigint | 로드 파일에서 오류가 발생한 라인 번호 |
field | 정수 | 오류가 발생한 필드 |
colname | character(1024) | 열 이름. |
값 | character(1024) | 구문 분석된 필드의 데이터 값. (잘릴 수도 있음) 로드 데이터의 멀티바이트 문자는 마침표로 대체됩니다. |
is_null | 정수 | 구문 분석된 값의 NULL 여부 |
type | character(10) | 필드의 데이터 형식입니다. |
col_length | character(10) | 열 길이(해당되는 경우). 이 필드는 데이터 형식에 길이 제한이 있을 때 채워집니다. 예를 들어 열의 데이터 형식이 "character(3)"일 때는 이 열에 "3"의 값이 저장됩니다. |
샘플 쿼리
다음은 STL_LOAD_ERRORS를 STL_LOADERROR_DETAIL로 조인하여 테이블 ID가 100133인 EVENT 테이블에 데이터를 로드할 때 발생한 구문 분석 오류의 세부 정보를 표시하는 쿼리입니다.
select d.query, d.line_number, d.value, le.raw_line, le.err_reason from stl_loaderror_detail d, stl_load_errors le where d.query = le.query and tbl = 100133;
다음은 오류가 발생한 열을 포함하여 성공적으로 로드된 열을 나타낸 샘플 출력입니다. 이 예에서는 정수가 필요한 필드에서 문자열이 잘못 구분 분석되어 세 번째 열에서 오류가 발생하기 전에 성공적으로 로드된 열이 2개입니다. 필드에 필요했던 형식은 정수이기 때문에 비초기화 데이터(uninitialized data)인 문자열 "aaa"를 NULL로 분석하고 구문 분석 오류를 생성하였습니다. 예를 보면 원시 값과 구문 분석된 값, 그리고 오류 이유가 출력되어 있습니다.
query | line_number | value | raw_line | err_reason -------+-------------+-------+----------+---------------- 4 | 3 | 1201 | 1201 | Invalid digit 4 | 3 | 126 | 126 | Invalid digit 4 | 3 | | aaa | Invalid digit (3 rows)
쿼리를 실행하여 STL_LOAD_ERRORS와 STL_LOADERROR_DETAIL을 조인하면 데이터 행의 각 열마다 오류 이유가 출력되며, 이는 단순히 해당 행에서 오류가 발생하였다는 것을 의미합니다. 결과에서 마지막 행이 실제로 구문 분석 오류가 발생한 열입니다.