2016-09-08 2 views
0

구분 된 파일에서 Oracle 12c로 데이터를로드해야한다는 요구 사항이 있습니다. 내 데이터 파일에서sqlldr - null 값이있는 행 건너 뛰기

OPTIONS (skip=2,rows=1000, bindsize=100000, readsize=100000, discardmax=1, silent=header,feedback) 
load data 
CHARACTERSET UTF8 
insert into table XYZ 
WHEN FIELD2 <> '' 
fields terminated by '^' optionally enclosed by ',' 
trailing nullcols 
(
FIELD1 filler, 
FIELD2, 
FIELD3, 
MODIFIED_DATE "SYSDATE" 
) 

, 난 FIELD2 & FIELD3에 대한이어야 NULL 하나 개의 행을 기대하고있다 :

내 FET의 파일은 다음과 같습니다.

내 데이터 파일을 가정은 다음과 같습니다

ABC^DEF^GHI

ABC ^^

의도 한대로 내 두 번째 레코드는 다음 메시지와 함께 폐기됩니다

:

1 행 성공적으로로드되었습니다.

0 데이터 오류로 인해 행이로드되지 않았습니다.

1 모든 WHEN 절이 실패했기 때문에 행이로드되지 않습니다.

0 모든 필드가 null이므로 행이로드되지 않았습니다.

그러나 sqlldr 종료 코드는 2로 유지되어 스크립트가 실패합니다. 유효한 레코드 (FIELD2가 널이 아닌 행)를로드하는 방법이 있습니까 & 성공적으로 종료합니까?

도움을 주시면 대단히 감사하겠습니다.

감사합니다.

+0

내 데이터 파일은 다음과 같아야합니다. ABC^DEF^GHI ABC ^^ – ppatkar

답변

0

WHEN 조건이 실패하면 발견 한대로 sqlldr이 0이 아닌 값으로 종료됩니다.

당신은 할 수 중 하나를해야합니다 다음 NULL 가진 사람들을 삭제

  • 전 과정 파일 및 모든 기록 테이블에

  • 로드를로드하기 전에 NULL 필드가 그 라인을 제거
    두 번째 열

  • 모든 레코드를 준비 테이블로로드 한 다음 원하는 행을
    ma로로드하십시오. 표에


  • 테이블

에 원하는 행을 외부 테이블을 사용하여 선택 당신은 어떤 공부를해야하고 볼 수 있도록 각 방법은 장점과 단점이있는 것이다 귀하의 상황에 가장 잘 부합합니다.

+0

제안 해 주셔서 감사합니다. 나는 파일을 미리 처리하고로드를 종료했다. – ppatkar