2016-10-20 7 views
1

필자의 요구 사항은 파일 서버에 oracle DB 테이블에 배치 된 큰 Excel 파일 (160KB 이상의 데이터와 약 150 열)을로드하는 것입니다. 그래도 제약의 몇 가지가 있습니다 -오라클 DB에 큰 Excel을로드하는 ETL

  1. 이 개 컬럼의 위치는 엑셀에 따라 다를 수 있습니다 [ '다는 EmpID'& 'ACCTNUM'을 말할 수] - 번 '다는 EmpID'에서 열 'A'에서 발생할 수있는 것처럼 다른 시간에는 'E'열에서도 발생할 수 있습니다. 따라서 데이터 매핑은 동적이어야합니다.

  2. 파일은 하루 중 언제든지 올 수 있으며 파일 서버에서 파일을 생성 한 후 1 시간 내에 처리해야하며 여러 파일이 하루에 올 수 있습니다. 따라서 oracle에서 [SQL 서버 작업을 통해 dtsx를 실행하는 것과 같은] Batch를 만들어야합니다.

OS 배치가 실행되는 OS는 Unix입니다.

  1. 성과는 중요한 도전 과제입니다. 따라서 성과를 내기 위해서는 성능을 기준으로 삼으십시오.

우리가 & 관련, ARKA을

감사합니다 [바람직 프리웨어/오픈 소스 도구를 사용하여이 작업을 수행 할 수있는 방법에 대한 조언을 바랍니다

+0

먼저 Excel 파일을 각 행에 올바른 값을 사용하여 CSV 형식으로 정규화해야합니다. 그런 다음 데이터베이스에 대량 삽입을 수행하기 위해이 단계를 수행 할 수 있습니다. http://stackoverflow.com/ 질문/22241428/oracle-bulk-import – Hackerman

+0

[Apache POI] (http://poi.apache.org/spreadsheet/)를 사용하여 Excel 파일을 처리 한 다음 비즈니스 로직을 구현하여 해당 데이터를 찾을 것을 제안합니다. 데이터베이스 테이블 열을 만들고 JDBC를 사용하여 데이터를 데이터베이스에 삽입합니다. – sanastasiadis

+0

또한 관련 질문 인 http://stackoverflow.com/questions/120001/load-excel-data-sheet-to-oracle-database를 살펴볼 수도 있습니다. – sanastasiadis

답변

1

개인적으로 나는 다음 호출 할 수있는 자바 프로그램을 작성합니다 유닉스 셸 스크립트. 자바 프로그램은 매우 쉬운 것입니다 :

  • 전자 준비
  • 이 파일을 읽을 문 작성 거짓 자동 커밋에서 DB 연결, 라인
  • 로 라인을 열
  • try 블록을 엽니 다 각 라인의 필드 토큰 화
  • 당신을 처리하기 위해 스마트 될 필요가 여기
    • 동적 필드는 물론
    • 그것이
    • 파일
    • 도달 끝 가까이
    • 시도하고 열린 마지막
    • 을 차단 커밋 실행
  • 이 준비된 명령문 내부의 값을 넣어 규칙을있을가
  • 롤백

자동 커밋을 true로 설정하면 실행 속도가 빨라집니다.

+0

요구 사항이 연기되었습니다. 따라서 결코 POC를 할 기회가 없었습니다. 그러나 귀하의 의견에 진심으로 감사드립니다. 내가 기회가있을 때마다 그것에 대해 노력할 것입니다. 감사! – animark