2013-08-23 2 views
1

Oracle 11g의 외부 테이블에 문제가 있습니다. 현재 DB Artisan을 사용하여 쿼리를 실행하고 있습니다. CREATE 및 ORGANIZATION 코드는 성공적으로 실행되지만 select 문을 실행하면 오류가 발생합니다. 내 .csv 파일은 헤더가있는 EXTERNAL_TABLE의 레이아웃과 동일한 방식으로 설정됩니다.

Oracle 11G, 외부 테이블 및 .csv 파일

CREATE TABLE EXTERNAL_TABLE 
(
    COL1 NUMBER(14), 
    COL2 VARCHAR2(10), 
    COL3 VARCHAR2(3), 
    COL4 VARCHAR2(3), 
    COL4 VARCHAR2(4), 
    COL6 NUMBER(4,0), 
    COL7 VARCHAR2(20), 
    COL8 VARCHAR2(20), 
    COL9 NUMBER(3)  
) 
ORGANIZATION EXTERNAL 
(
    TYPE ORACLE_LOADER 
    DEFAULT DIRECTORY FOLDER1 
    ACCESS PARAMETERS 
    ( 
     RECORDS DELIMITED BY NEWLINE 
     FIELDS TERMINATED BY ',' 
     MISSING FIELD VALUES ARE NULL 
     (COL1 CHAR(14), 
    COL2 CHAR(10), 
    COL3 CHAR(3), 
    COL4 CHAR(3), 
    COL4 CHAR(4), 
    COL6 CHAR(4), 
    COL7 CHAR(20), 
    COL8 CHAR(20), 
    COL9 CHAR(3)      
       ) 
    ) 
    LOCATION ('FILENAME.csv') --Name of flat file. 
) 
REJECT LIMIT 0; 

은 실행 :

SELECT * FROM EXTERNAL_TABLE 

이 오류를 제공합니다 :

 
ORA-29913:error in executing ODCIEXTTABLEOPEN callout 
ORA-29400:data cartridge error 
KUP-04027:file name check failed: A:\job\job\FILENAME_1234_5566.log 
+5

쓰기 방지 탭을 확인하십시오. –

+0

LOL !!! 플로피 디스크 반환! 플로피 디스크에서 읽는 Oracle 11g는 매우 귀중합니다 dolm77 참고 - 가져 오기 전에 파일을 하드 드라이브로 옮깁니다 –

+0

ORGANIZATION 코드는 다음과 같습니다. CREATE TABLE 명령의 섹션, 별도의 코드가 아님 –

답변

4

KUP-04027:file name check failed는 파일 위치가 유효하지 않습니다 것을 의미합니다.

그래서

,이 파일 이름 지정 ...

A:\job\job\FILENAME_1234_5566.log 

은 ... 여러 생각이 발생합니다 @jonearles으로

  1. 지적의 A : 전통적으로 플로피 디스크 드라이브 용으로 예약 된 . 데이터베이스 서버 (즉, 데이터베이스를 호스팅하는 컴퓨터)에 A : 드라이브가 있습니까? 그렇지 않다면 수정해야합니다.
  2. 실제로 드라이브에는 job이라는 하위 디렉토리가있는 job이라는 루트 디렉토리가 있습니까? 또는 DIRECTORY 오브젝트 경로의 오타가 folder1입니까?
  3. 또한 샘플 코드는 파일 이름을 'FILENAME.csv'로 제공합니다. 분명히 그 오류 메시지의 파일 이름과 일치하지 않습니다. 외부 테이블 정의에서 파일 이름에 대해 실제로 지정하는 것은 무엇입니까?
  4. KUP-04027의 정확한 원인은 파일 이름 지정 규칙이 각 OS에 고유하기 때문에 운영 체제에 따라 다릅니다. 내 생각 엔 귀하의 데이터베이스가 실제로 원격 유닉스 서버에 상주하지만 로컬 Windows PC에서 파일을 읽으려고합니다. 그것이 시나리오라면 작동하지 않을 것입니다 : 파일을 데이터베이스 서버에 업로드해야합니다.
+0

드라이브는 다른 매핑 된 드라이브의 변수입니다. 실제로 J입니다. 죄송합니다. 경로는 J : \ proxy \ proxy이고 오류 3은 참조합니다. SELECT 문을 실행할 때 만들어지는 로그 파일입니다. 실제 파일 이름은 "FILENAME.csv"입니다. 데이터베이스가있는 원격 서버에 상주합니다. 따라서 .csv는 내 로컬 드라이브에 없으며 DATA_TEMP라는 외부 테이블의 기본 디렉토리에 있습니다. 문제를 결정할 때 묻는 기본 질문에는 무엇이 있습니까? – dolm77

1

오케이,이 질문은 오래 전에 요청되었지만 최근에이 문제가 발생했습니다.

문제점 Oracle 외부 테이블은 원격 네트워크 위치를 참조하는 하드 링크를 완벽하게 지원하지 않습니다.
내가 만든 것은 UNC 경로 (예 : '\ remoteserver \ proxy'와 같은 원격 네트워크 위치를 가리키는 디렉토리 개체)를 만드는 것입니다.