외부 테이블에 Oracle Preprocessor를 사용하여 이러한 유형의 형식을 소비하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1290520

문제

N 테이블과 유사 할 수있는 사용자 정의 파일 형식이 있다고 가정합니다. 선택하자 3. 파일을 변환하여 3 개의 데이터베이스 테이블을 채우기 위해 사용자 정의로드 래퍼를 작성할 수 있습니다.

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

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

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

데이터가 N이 가능한 N 단일 파일이 있습니다.

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

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

도움이 되었습니까?

해결책

"3 개의 테이블을 동일한 파일에 매핑하면 성능에 어떤 영향을 미칩니 까?

하나의 외부 테이블 정의 또는 세 가지 외부 테이블 정의를 통해 동일한 파일에 액세스하는 세 세션 간에는 차이가 거의 없거나 전혀 없어야합니다. 외부 테이블은 데이터베이스 (파일 시스템 또는 디스크에 따라)에 의해 캐시되지 않으므로 모든 액세스는 순전히 물리적 판독 값입니다. 사전 프로세서 프로그램에 따라 어느 정도의 직렬화가있을 수 있습니다 (또는 사전 프로세서 프로그램을 사용하여 직렬화를 부과 할 수도 있습니다).

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

당신은 사용할 수 있습니다 다중 테이블 인서트 단일 패스로 단일 외부 테이블 정의에서 여러 데이터베이스 테이블을로드합니다.

"전처리 기의 표준 출력은 어떤 형식이어야합니까? CSV 여야합니까, 아니면 외부 테이블 드라이버를 구성하는 방법이 있습니까?"

그것은 SQL*로더를 거의 따르고 있으며 둘 다 유틸리티 설명서. 고정 형식 또는 기타 구화기를 사용할 수 있습니다.

다른 프로그램을 참조하는 N 외부 테이블을 정의해야합니까?

데이터가 어떻게 인터리브되는지에 따라 다릅니다. 사전 프로세서를 무시하면 다른 외부 테이블이 같은 파일에서 다른 열을 가져 오거나 언제로드하십시오 포함하거나 제외 할 레코드를 결정하는 조항.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top