2014-08-29 2 views
2

나는 Redshift에서 약 200 열의 스테이징 테이블을 가지고 있습니다. 먼저 S3에서이 테이블로 데이터를 복사 한 다음 쿼리에서 큰 삽입을 사용하여이 테이블의 데이터를 다른 테이블로 복사합니다. 스테이징 테이블의 대부분의 필드는 varchar이며 쿼리의 적절한 데이터 유형으로 변환됩니다. 내가 내 입력을 살균 또는 내 쿼리를 수정할 수 있도록하는 필드 것은,이 오버 플로우를 일으키는 찾을 수있는 방법을쿼리에서 postgresql 예외를 일으킨 열을 찾는 중입니다.

org.postgresql.util.PSQLException: ERROR: Numeric data overflow (addition) 
Detail: 
----------------------------------------------- 
error: Numeric data overflow (addition) 
code:  1058 
context: 
query:  9620240 
location: numeric.hpp:112 
process: query1_194 [pid=680] 

-

나는 숫자 오버 플로우를 일으키는 스테이징 테이블의 일부 필드를 얻고있다 .


답변

0

나는 Netgezza를 사용하여 regex 함수를 사용하여 행을 grep 할 수 있습니다. 다행히 redshift는 regexp도 지원합니다.

http://docs.aws.amazon.com/redshift/latest/dg/REGEXP_COUNT.html

에서 봐 주시기 바랍니다 그래서 귀하의 경우 아이디어는 WHERE 절에 당신이 값을 삽입하는 동안 발생하는 숫자 캐스트를 초과하는 찾을 수있는이 방법으로 정규 표현식을 사용하는 것입니다. 문제는 실제 파일에서 문제의 원인이되는 행을 판별 할 수있는 데이터 식별을 찾는 것입니다. 데이터의 다른 사본을 작성하고 임시 테이블에 행 번호를 작성할 수 있습니다. 임시 테이블을 분석 소스로 사용하십시오. 숫자 입력란의 크기는 얼마입니까? 여러 컬럼을 숫자로 3 스트하는 경우, 둘 이상의 컬럼에 대해이 분석을 수행해야합니다.

관련 문제