2012-10-25 2 views
3

문제점을 발견했으며이를 구현하는 데 가장 적합한 기술이 무엇인지 확실하지 않습니다. 당신들이 당신의 경험을 토대로 나에게 제안 할 수 있다면 의무가있을 것입니다. 10-15 개의 CSV 파일에서 데이터를로드하고 싶습니다. 각 파일은 상당히 큰 5-10GB입니다. 로드 데이터는 CSV 파일을 XML로 변환 한 다음이 XML을 사용하여 Oracle에서 6-7 개의 스테이징 테이블을 채우는 것을 의미합니다. XML의 요소와 결국 테이블의 행이 여러 CSV 파일에서 가져 오도록 데이터를 채워야합니다. 예를 들어 요소 A는 하위 요소가 CSV 파일 1, 파일 2 및 파일 3 등에서 오는 데이터를 가지게됩니다.대용량 CSV 파일을 Oracle 테이블에로드하기위한 기술 선택

Linux의 Jboss의 Top of Apache Camel에 프레임 워크가 있습니다. Oracle 10G는 데이터베이스 서버입니다. 내가 고려하고 옵션,

  1. Smooks - 문제가 Smooks 한 번에 하나의 CSV를 직렬화하고 난을 실행하기 때문에 내가 읽어 다른 CSV 파일 참깨 반 구운 자바 콩에 개최 여유하지 못할 것입니다 그러나 XML로 작성된 디스크에 완전히 채워지기 전에 작성하고 보유해야하는 빈의 수를 감안할 때 메모리가 부족할 위험이 있습니다.
  2. SQLLoader - XML ​​작성을 모두 건너 뛸 수 있으며 SQLLoader를 사용하여 CSV를 준비 테이블에 직접로드 할 수 있습니다. 그러나 나는 내가 할 수 있는지 잘 모르겠다. 첫 번째 파일 다음에 레코드를 업데이트하는 동일한 테이블에 SQL Loader의 여러 CSV 파일을로드합니다. 비. 스테이징 테이블을로드하는 동안 일부 변환 규칙을 적용하십시오.
  3. CSV를 XML로 변환하는 Python 스크립트.
  4. SQLLoader는 CSV 데이터에 해당하는 다른 스테이징 테이블 집합을로드 한 다음 저장 프로 시저를 작성하여이 새로운 스테이징 테이블 집합에서 실제 스테이징 테이블을로드합니다 (필자가 피할 경로 필요한 기존 프레임 워크).

미리 감사드립니다. 누군가가 올바른 방향으로 나를 가리킬 수 있거나 자신의 개인적인 경험을 통찰 해 주면 정보에 입각 한 결정을 내리는 데 도움이 될 것입니다. -v-

PS

관련하여, 상기 CSV 파일은 40 열 각각 매우 간단합니다. 객체의 깊이 또는 파일 간의 관계는 2 ~ 3 정도입니다.

답변

2

예를 들어 Informatica PowerCenter, Pentaho Data Integration과 같은 완전한 ETL 도구를 사용할 수있는 경우가 아니면 제 4 솔루션을 제안합니다. 오라클은 가장 복잡한 부분을 처리 할 것이기 때문에 성능은 좋아야합니다.

2

Informatica PowerCenter에서 Marek 응답으로 XML의 + 5GB를 가져 오거나 내보낼 수 있습니다. 작업이 매우 빠르기 때문에 시도하십시오. here은이 도구에 익숙하지 않은 경우 간단한 소개입니다.

1

csv 파일을 외부 Oracle 테이블로로드하는 프로 시저를 호출하고 다른 스크립트를 대상 테이블에로드하는 프로 시저를 호출하는 프로세스/스크립트를 만듭니다.
또한 cron 작업을 추가하여 들어오는 csv 파일을 디렉토리로 추적하고 처리하고 csv 파일을 출력/처리 된 폴더로 이동하는 스크립트를 호출 할 수 있습니다.
로깅하거나 전자 메일을 보내 예외를 처리 할 수도 있습니다. 행운을 빕니다.

관련 문제