엄청난 양의 데이터를 테이블에 업로드하기 위해 SQL * Loader 스크립트 작업 중입니다.반복되는 레코드를 건너 뛰는 방법은 무엇입니까?
스크립트는 다음과 같은 방식으로 작동합니다. FTP 서버에 연결하고 디렉토리를 미러링하여 생성 된 모든 새 파일을 가져온 다음 모든 CSV 파일을 가져 와서 하나의 파일로 저장 한 다음 업로드합니다 이 더 큰 CSV 파일 내의 데이터
기본적으로 SQL * Loader는 테이블에 레코드가 처음 존재하는 경우 레코드를 삽입하지 않는 방법을 찾고 있습니다.
테이블은 최대 1,000 만 개의 레코드를 보유 할 수 있으며 때로는 이러한 파일을 잘못 다운로드해야하므로 일부 레코드가 반복 될 수 있습니다.
필요한 두 필드에 고유 키를 입력했습니다.
최대 오류를 스크립트가 삽입하려고 시도하는 행 수로 변경하려고 시도했지만 반복적 인 레코드가없는 경우보다 Constraint Violation 오류를 반환하는 것이 훨씬 느린 것으로 나타났습니다. 정말 큰 로그 파일.
SQL * Loader 제어 파일 내에 조건을 두는 방법이 있습니까? (두 필드에서 반복 될 수는 있지만 둘 다 동시에 수행 할 수 없으므로)?
또는이 프로세스의 속도를 높이는데 도움이 될 것 같습니까?
보너스 질문 : 10 개의 CSV 파일을 각각 SQL * Loader로 보내거나 그 중 10 개의 데이터를 포함하는 단일 파일을 만드는 것이 더 좋습니까?
동일한 CSV 파일을 여러 번 가져 오는 것과 다른 CSV 파일에서 중복 될 수있는 데이터가 있으면 문제가 있는지 명확히 확인하십시오. – Gnudiff
@ 그누 디프 나는 그것을 반영하도록 편집했습니다. 필자는 결국 CSV 파일이 반복되는 것에 신경 쓰지 않습니다. 스크립트가 이미 테이블에있는 행을 무시하기를 원하기 때문입니다. –
좋아. 문제는 CSV (sort & uniq가 도움이 될 것입니다)에서 중복 행이라는 생각에 기초하여 대답을 작성하기 시작했으나 실제 SQL 테이블을 확인해야하는 경우 SQL 내에서 수행해야합니다. – Gnudiff