2016-10-06 2 views
0

Oracle Data Integrator 12c에서 작업 중이며 누군가 "/ import"폴더에 복사하는 많은 txt 파일이 있습니다. ODI는이를 알아 차리고 각 파일에 대한 매핑을 호출해야합니다. 그런 다음 각 파일을 "/ 내보내기"다른 폴더에 저장해야합니다.Oracle Data Integrator (ODI)에서 들어오는 각 파일에 대한 매핑을 호출하는 방법

내 매핑이 하나의 파일에 대해 완벽하게 작동합니다. 모델 파트에서이 파일을 지정했습니다. 하지만 어떻게 동적으로 각 파일을로드하고 매핑을 각 파일과 함께 작동하게하고 저장할 수 있습니까?

는 나는 내가 :) 원하는 내가 당신의 필요에 유사한 과정을 완료 한 사전

답변

0

에서

감사 분명한 바랍니다. 정확한 필요는 아니었지만 단계가 도움이 될 수 있습니다. 타사에서 FTP를 통해 디렉토리로 파일을 보내고 파일 수나 파일 이름 표준에 대한 제한이 없기 때문에 제 솔루션이 약간 까다 롭습니다.

작업이 전 클라이언트에 있었기 때문에 전체 단계 코드와 스크린 샷을 제공 할 수 없지만 개요를 말할 수 있습니다. 당신은 OSCommand 구성 요소의 ODI 패키지

  1. 가 필요합니다 나는 각 행의 일련 번호와 함께 테이블에 파일 filelist.txt을 읽는 인터페이스를했다
  2. ls >> filelist.txt했다.
  3. 위의 표에서 최대 파일 번호를 읽는 ODI 변수 #MAX_ROW_NUM이 있습니다.
  4. ROW_NUM = #MAX_ROW_NUM
  5. #FILE_NAME 디렉토리 /completed에 함께 OSCommand 구성 요소 이동 파일을 사용하여
  6. (모델의 동적이어야 소스 데이터 저장소) 실행 인터페이스를 #FILE_NAME를 사용하여 테이블에서 #FILE_NAME 변수로 #MAX_ROW_NUM > 0
  7. 가져 오기 파일 이름에 대한 변수를 평가 .
  8. 사용 및 ODI 절차 -1
  9. GO 4

선택 단계에서 파일 목록 테이블에서 #MAX_ROW_NUMBER으로 #MAX_ROW_NUMBER

  • 증가 값을 행을 삭제하면 KO 다른 OSCommand 4 단계에서있는이 삭제 할 수 있습니다 filelist.txt

    더 많은 도움이 필요하시면 언제든지 문의 해 주시기 바랍니다.

  • +0

    6.는 않았다 때까지

  • 이동 3 단계 - 데이터 저장소로 변수를 사용 :) – number005

  • 0

    요구 사항에 따라 누군가가 파일을 가져 오는 가져 오기 폴더로 폴링해야합니다. 필요에 따라 폴링 시간을 초 단위로 선택할 수 있습니다.

    당신은 아래의 흐름 패키지 작성해야합니다 : 특정한 패턴없이 당신이 파일이나 까지 기다려야하는 데 도움이 될 것입니다,

    1. ODI 유틸리티 ODIFileWait 지정된 폴더에 도착한다. ODI 이 파일을 찾거나 알아 채면 다음 단계로 넘어갑니다.

    2. OSCommand ls >> filenames.txt를 사용하여 개의 파일로 모든 파일 이름을 가져옵니다. 이제 로드 상태의 파일 이름에 각 레코드에 대해 고유 일련 번호 을 채울 수있는 DB 테이블을 만듭니다. 이 filenames.txt를 읽고 DB 테이블에 각 파일 이름에 대한로드 상태를 채 웁니다.

    3. DB 테이블 에서로드 상태 (처리 대기 중 또는 보류 중)에 따라 파일의 총 수를 계산하고 저장하는 변수를 만들고 계속 진행하기 전에 0보다 큰지 확인하십시오.
    4. 다른 변수에서 같은 데이터베이스 테이블의 에서 최소 시퀀스 번호를 가져 와서 시퀀스 번호를 기반으로 동일한 테이블의 파일 이름을 검색하십시오.

    5. 지금 당신의 매핑 또는 인터페이스를 처리하지만 소스 데이터 저장소 (파일)을 만드는 동안 자원 이름 필드 (이전 단계에서 파일 이름의 검색을 위해 사용되었다) 변수 이름을 제공해야합니다. 처리되지 않은 파일의 개수가 0