2009-08-17 5 views
0

N 개의 테이블과 유사 할 수있는 사용자 지정 파일 형식이 있다고 가정합니다. 3. 파일을 변환하여 3 개의 데이터베이스 테이블을 채우기 위해 사용자 정의로드 래퍼를 작성합니다.외부 테이블 용 Oracle Preprocessor를 사용하여이 유형의 형식을 사용하려면 어떻게해야합니까?

그러나 공간 및 자원 제약 조건에 대해이 모든 것을 테이블 공간에 저장할 수는 없습니다.

외부 테이블 용 Oracle Preprocessor를 사용하여 사용자 정의 파일을 3 가지 방식으로 변환 할 수 있습니까?

내가 사용한 사용 예는 gzip의 텍스트 파일에 예제를 제공합니다. 그러나 이것은 하나의 변환만으로 일대일 파일 대 테이블 관계입니다.

데이터를 N 회 추출 할 수있는 단일 파일이 있습니다.

  • 각각 다른 프로그램을 참조하는 N 개의 외부 테이블을 정의해야합니까?
  • 동일한 파일에 세 개의 테이블을 매핑하면 성능에 어떤 영향을 줍니까? (액세스는 대부분 또는 모든 읽기, 쓰기가 거의 또는 전혀 없음).

또한 내 전처리 기의 표준 출력은 어떤 형식입니까? CSV가 아니면 외부 테이블 드라이버를 구성하는 방법이 있습니까?

+0

"공간 및 리소스 제약 조건을 가정하면이 모든 것을 테이블 스페이스에 저장할 수 없습니다." 이 XE는 4GB 한도가 있습니까? –

답변

0

이 조금이거나한다 "나는 같은 파일로 세 개의 테이블을 매핑, 어떻게이 접근은 대부분 또는 모든 는 몇 읽거나 어떤 기록 (? 성능에 영향을 미칠 것" 하나의 외부 테이블 정의 또는 세 개의 외부 테이블 정의를 통해 동일한 파일에 액세스하는 세 세션간에 차이가 없음 외부 테이블은 데이터베이스 (파일 시스템 또는 디스크 일 수 있음)에 캐싱되지 않으므로 모든 액세스는 순전히 물리적 읽기입니다. 프로세서 전처리 프로그램에 따라 일부 레벨의 seri가있을 수 있습니다 거기에 alization (또는 serialization을 부과하기 위해 전처리 프로그램을 사용할 수도 있습니다).

성능면에서 단일 세션이 외부 파일/테이블을 스캔하여 하나 이상의 데이터베이스 테이블에로드하는 것이 좋습니다. 다른 세션은 거기에서 그것을 읽고 SGA에 캐시됩니다. 또한 데이터베이스 테이블을 인덱스 화하여 모두 읽을 필요가 없습니다.

multi-table inserts을 사용하면 단일 패스에서 단일 외부 테이블 정의에서 여러 데이터베이스 테이블을로드 할 수 있습니다.

"어떤 형식 나의 처리기의 표준 출력 는 CSV 수 해야합니까?해야하거나 외부 테이블 드라이버를 을 구성하는 방법이 있습니다 무엇입니까?"

SQL * Loader를 따르며 둘 다 Utilities manual에 있습니다. 고정 형식이나 다른 구분 기호를 사용할 수 있습니다.

나는 각각 다른 프로그램을 참조, N 외부 테이블을 정의해야겠습니까?

데이터가 인터리브되는 방법에 따라 다릅니다. 전 처리기를 무시하면 같은 파일에서 다른 열을 가져 오는 다른 외부 테이블을 갖거나 LOAD WHEN 절을 사용하여 포함 시키거나 제외시킬 레코드를 결정할 수 있습니다.

+0

필자는 유스 케이스가 무엇인지 기억하지 않지만 모든 질문을 신중하게 다뤘습니다. 고맙습니다! – maxwellb