STL_LOAD_ERRORS - Amazon Redshift

STL_LOAD_ERRORS

모든 Amazon Redshift 로드 오류에 대한 레코드를 표시합니다.

STL_LOAD_ERRORS에는 모든 Amazon Redshift 로드 오류에 대한 이력이 저장됩니다. 가능한 로드 오류와 설명을 나타낸 전체 목록은 로드 오류 참조 섹션을 참조하세요.

구문 분석 오류가 발생한 경우 STL_LOAD_ERRORS에 대한 쿼리를 실행하여 오류에 대한 일반 정보를 확인한 이후에도 정확한 데이터 행과 열 등을 포함하여 그 밖의 세부 정보를 알고 싶다면 STL_LOADERROR_DETAIL에 대한 쿼리를 실행합니다.

STL_LOAD_ERRORS는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.

참고

STL_LOAD_ERRORS에는 기본 클러스터에서 실행되는 쿼리만 포함됩니다. 동시성 조정 클러스터에서 실행되는 쿼리는 포함되지 않습니다. 기본 및 동시성 조정 클러스터 모두에서 실행되는 쿼리에 액세스하려면 SYS 모니터링 뷰인 SYS_LOAD_ERROR_DETAIL을 사용하는 것이 좋습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다.

테이블 열

열 명칭 데이터 유형 설명
userid 정수 항목을 생성한 사용자의 ID.
slice 정수 오류가 발생한 조각
tbl 정수 테이블 ID.
starttime 타임스탬프 로드 시작 시간(UTC)
session 정수 로드 실행 세션의 세션 ID
쿼리 정수 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다.
filename character(256) 로드할 입력 파일의 전체 경로
line_number bigint 로드 파일에서 오류가 발생한 라인 번호 JSON을 통한 COPY 작업일 때는 오류가 발생한 JSON 객체의 마지막 라인 번호입니다.
colname character(127) 오류가 발생한 필드
type character(10) 필드의 데이터 형식입니다.
col_length character(10) 열 길이(해당되는 경우). 이 필드는 데이터 형식에 길이 제한이 있을 때 채워집니다. 예를 들어 열의 데이터 형식이 "character(3)"일 때는 이 열에 "3"의 값이 저장됩니다.
position 정수 필드의 오류 위치
raw_line character(1024) 오류가 포함된 원시 로드 데이터. 로드 데이터의 멀티바이트 문자는 마침표로 대체됩니다.
raw_field_value char(1024) "colname" 필드에서 구문 분석 오류의 원인이 되는 사전 구문 분석 값
err_code 정수 오류 코드.
err_reason character(100) 오류 설명
is_partial 정수 true(1)인 경우 COPY 작업 중에 입력 파일이 범위로 분할됨을 나타내는 값입니다. 이 값이 false(0)이면 입력 파일이 분할되지 않습니다.
start_offset bigint COPY 작업 중에 입력 파일이 분할되는 경우 분할의 오프셋 값(바이트 단위)을 나타내는 값입니다. 파일의 줄 번호를 알 수 없는 경우 줄 번호는 -1입니다. 파일이 분할되지 않은 경우 이 값은 0입니다.
copy_job_id bigint 복사 작업 식별자입니다. 0은 작업 식별자가 없음을 나타냅니다.

샘플 쿼리

다음은 STL_LOAD_ERRORS를 STL_LOADERROR_DETAIL로 조인하여 가장 최근 로드 도중 발생한 오류 정보를 표시하는 쿼리입니다.

select d.query, substring(d.filename,14,20), d.line_number as line, substring(d.value,1,16) as value, substring(le.err_reason,1,48) as err_reason from stl_loaderror_detail d, stl_load_errors le where d.query = le.query and d.query = pg_last_copy_id(); query | substring | line | value | err_reason -------+-------------------+------+----------+---------------------------- 558| allusers_pipe.txt | 251 | 251 | String contains invalid or unsupported UTF8 code 558| allusers_pipe.txt | 251 | ZRU29FGR | String contains invalid or unsupported UTF8 code 558| allusers_pipe.txt | 251 | Kaitlin | String contains invalid or unsupported UTF8 code 558| allusers_pipe.txt | 251 | Walter | String contains invalid or unsupported UTF8 code

다음은 STL_LOAD_ERRORS와 STV_TBL_PERM을 함께 사용하여 새로운 뷰를 생성한 다음 이 뷰에서 EVENT 테이블로 데이터를 로드할 때 발생한 오류를 확인하는 예입니다.

create view loadview as (select distinct tbl, trim(name) as table_name, query, starttime, trim(filename) as input, line_number, colname, err_code, trim(err_reason) as reason from stl_load_errors sl, stv_tbl_perm sp where sl.tbl = sp.id);

다음은 EVENT 테이블에 로드하는 도중 마지막으로 발생한 오류를 실제로 반환하는 쿼리입니다.

select table_name, query, line_number, colname, starttime, trim(reason) as error from loadview where table_name ='event' order by line_number limit 1;

위 쿼리는 EVENT 테이블에서 발생한 마지막 로드 오류를 반환합니다. 발생한 로드 오류가 없는 경우에는 쿼리가 0개의 행을 반환합니다. 이번 예에서는 쿼리가 단일 오류를 반환합니다.

table_name | query | line_number | colname | error | starttime ------+-----+----+----+--------------------------------------------------------+---------------------- event | 309 | 0 | 5 | Error in Timestamp value or format [%Y-%m-%d %H:%M:%S] | 2014-04-22 15:12:44 (1 row)

병렬 처리를 용이하게 하기 위해 COPY 명령이 압축되지 않은 텍스트로 구분된 큰 파일 데이터를 자동으로 분할하는 경우 line_number, is_partialstart_offset 열은 분할과 관련된 정보를 표시합니다. (원본 파일의 줄 번호가 없을 경우 줄 번호를 알 수 없습니다.)

--scan ranges information SELECT line_number, POSITION, btrim(raw_line), btrim(raw_field_value), btrim(err_reason), is_partial, start_offset FROM stl_load_errors WHERE query = pg_last_copy_id(); --result -1,51,"1008771|13463413|463414|2|28.00|38520.72|0.06|0.07|NO|1998-08-30|1998-09-25|1998-09-04|TAKE BACK RETURN|RAIL|ans cajole sly","NO","Char length exceeds DDL length",1,67108864