2016-07-13 10 views
1

데이터베이스에서 작성한 텍스트 파일을 읽어야합니다. UTL_FILE.FOPEN 디렉토리 매개 변수에 적합한 경로가 무엇인지 모르겠습니다. 경로가 내 로컬 PC에 없기 때문에 혼란 스럽습니다.Pl 데이터베이스에서 데이터베이스의 디렉토리에서 텍스트 파일을 읽는 중

I이 파일을 찾을 경로는이 내 현재 코드입니다

\\{something here}\winixdb$\{schema here I think}\dev\data 

같은 것입니다.

ORA-2928: Invalid Directory Path

내가 다른 자원보고 시도했다 그러나 로컬 환경에서 발견되는 경로에 대해 이야기 : 지금 나는 그것이 오류가 될 것입니다 거기에 정확한 경로를 넣어 경우

Declare 

f UTL_FILE.FILE_TYPE; 
s VARCHAR2(200); 

begin 

    f:= UTL_FILE.FOPEN({path_here}, 'certs_file.txt', 'R'); 
    UTL_FILE.GET_LINE(f,s); 
    UTL_FILE.FCLOSE(f); 
    dbms_output.put_line(s); 

end; 

. 또한, 나는 데이터베이스에있는 파일에 대한 아이디어를 이해하지 못한다.

이 파일을 DBMS로 출력하고 싶습니다.

+2

아마도 [질문] (http://stackoverflow.com/que stents/2751113/utl-file-fopen-procedure-not-accepting-for-directory)가 도움이 될 것입니다. 'directory'는 (테이블이나 인덱스를 생성하는 것처럼) 생성해야하는 데이터베이스 객체입니다. 위치는 클라이언트가 아닌 db 서버 시스템에 있습니다. – Glenn

+0

내가 두꺼비를 사용하여 위치에 액세스하고 스키마, 디렉토리로 이동 한 후 해당 위치를 찾을 수 있습니까? 편집 : 나는 그것을하고 정확한 디렉토리 경로에 넣어하지만 난 여전히 오류가 나타납니다 – qaispak

+0

나는 우리가 말하는 경로가 UNC 경로이며 데이터베이스가 Windows에서 실행되고 있다고 생각하고 있습니다 (올바른 경우 나, m 잘못된). 'fopen' 호출에 UNC 경로 전체를 넣으시겠습니까? 당신의'utl_file_dir' 설정에 그 경로가 있습니까? 또는 UNC 경로를 가리키는 디렉토리 객체를 만들었습니까? Oracle 서비스를 실행하는 운영 체제 사용자가 해당 UNC 경로에 액세스 할 수 있습니까? –

답변

1

먼저 당신이 {path_here}에 액세스 할 디렉토리를 선언해야합니다 :

CREATE OR REPLACE DIRECTORY MY_PATH_ON_DBMS as '{path_here}'; 

(이미 존재하는 경우, 당신은 select * from dba_directories; 그것을 찾아야한다)

; make sure oracle user can read to it on the DBMS;

그런 다음에 그 이름에 의해 호출 귀하의 코드 :

Declare 
    f UTL_FILE.FILE_TYPE; 
    s VARCHAR2(200); 
begin 
    f:= UTL_FILE.FOPEN('MY_PATH_ON_DBMS', 'certs_file.txt', 'R'); 
    UTL_FILE.GET_LINE(f,s); 
    UTL_FILE.FCLOSE(f); 
    dbms_output.put_line(s); 
end; 
+0

oracle 사용자도 쓰기 권한이 있거나 읽기 권한이 충분합니까? – RayCW

+0

읽기 전용 액세스로 충분해야합니다. 감사합니다. –

+0

신고해야하나요? 나는 그것이 선언되지 않은 (또는 변수처럼 선언 된) 다른 스키마에서 일부 패키지를보고있다. – qaispak