[英]How to insert into Table in Oracle 10g from Text file using PLSQL program?
我正在Oracle 10g中嘗試此PL / SQL程序。 要從位置“ C:\\ Oracle”讀取文本文件(數據),並使用PLSQL腳本將其加載到Oracle Table中。 但是,出現以下錯誤:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 488
ORA-29283: invalid file operation
這是我的腳本:
Create or Replace PROCEDURE Rfile is
line VARCHAR2(100);
namesfile UTL_FILE.FILE_TYPE;
BEGIN
-- Syntax : FOPEN ( directory alias, filename, open mode)
namesfile := UTL_FILE.FOPEN('FILESDIR1','NAMES2.TXT','R'); -- open in read mode
LOOP
UTL_FILE.GET_LINE(namesfile,line,100);
dbms_output.put_line(line);
insert into names2 values(line); -- insert into NAMES table
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Others exceptions....');
END;
您可以嘗試其他方法:
創建一個外部表 (該表是映射到文件的表)以讀取文件,然后從外部表中insert-select
到您的表
(或者也許您甚至不需要將其插入到其他表中?)
您的循環不檢查文件結尾,因此從邏輯上講,文件讀取操作應該引發異常,這大概是您所得到的。
另外,您還必須檢查目錄(FILESDIR1)指向正確的OS目錄,並且已授予您對該目錄的訪問權限,並且該文件位於該OS目錄(而不是本地文件系統)上。
順便說一句。 在某些情況下,您最好使用SQL Loader來批量加載表中的數據,特別是。 如果文件很大,因為您可以指示SQL加載程序直接加載數據文件中的數據,而繞過所有由INSERT語句生成的SQL層。
您可能需要在這行上使用小寫的“ r” ...
namesfile := UTL_FILE.FOPEN('FILESDIR1','NAMES2.TXT','r'); -- open in read mode
^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.