2016-09-14 14 views
0

RJDBC 패키지 R을 사용하여 10000 레코드 배치를 통해 14 개의 열이 포함 된 Teradata 테이블에 3.8M 레코드를 삽입하려고 시도했습니다. 380000 개의 레코드를 삽입 한 후 항상 충돌합니다. 39 번째 배치 실행시. 이것은 내가 오류, .jcall에서특정 일괄 처리 실행 후 Teradata JDBC 오류 1338

오류입니다 (PS, "[I", "가 executeBatch") :
java.sql.BatchUpdateException : [테라 데이타 JDBC 드라이버] [TeraJDBC 15.10.00.22 ] [오류 1338] [SQLState HY000] PreparedStatement 일괄 요청을 실행하는 동안 오류가 발생했습니다. 오류의 세부 정보는 getNextException을 통해 액세스 할 수있는 예외 체인에서 찾을 수 있습니다.

동일한 데이터 프레임에서 다른 행 집합으로 변경해 보았습니다. 그리고 동작은 동일하게 유지되며 39 번째 배치 실행시 충돌합니다.

어떤 아이디어가 Error 1338이고 무엇이 수정 될 수 있습니까? 또한 약 getNextException을 언급하지만 어떻게 R과 함께 사용할 수 있습니까?

내가 사용 접근 방식은 초기 예외 "개체"당신이 .jgetEx를 사용해야합니다 다음은 검색하는 데에 getNextException 방법을 사용할 수 있습니다를 얻으려면이 하나 https://developer.teradata.com/blog/ulrich/2013/11/a-wider-test-case-on-r-jdbc-fastload

+0

"실패의 세부 정보는 getNextException을 통해 액세스 할 수있는 예외 체인에서 찾을 수 있습니다." - 그래서 뭐라고 써 있니? –

+0

감사합니다. @StephenC을 지적 해주세요. 나는 이것을 원래의 질문에 넣어야했다. 나는 R에서 사용하고있는 접근 방식으로'getNextException'을 어떻게 사용할 지 확신하지 못합니다. – SanjayIV

답변

0

유사하다 근본 원인.

완전한 예제는 teradata 개발자 포럼의 this link을 참조하십시오. 일괄 삽입 동안 예외

일반적인 원인은 없음

  • "관련 값"무효 값, 수치 데이터의 과도한 정밀도
  • "크기 관련" : 삽입 된 행은 "더 만들 데이터베이스의 방 "데이터베이스에서 더 이상 방"오류

당신은 당신이 다른 데이터 세트를 테스트 한 그들은 모두가 매우 가능성이있어, 같은 실행 실패라고 때문에 ".

그러나, 이것은 반드시 당신에게 부여 된 공간이 가득 것을 의미하지 않는다 : 그것은 될 수있는 테이블이 제대로 기본 색인를 선택했다 (또는 데이터가 주 을 복제 생산에 오류가 있음 인덱스) 매우 비뚤어진 분포가 발생합니다. 이 경우 더 많은 apt를 정의 할 수 있다면 많은 공간을 낭비하게 될 것입니다 기본 색인 (또는 어떤 종류의 무대 테이블로 사용하는 경우 NOPI 테이블을 사용하십시오).

Here이 "공간 낭비"항목에 대한 토론을 통해 문제를 진단 할 수있는 많은 유용한 쿼리를 찾을 수 있습니다.