如何使用PLSQL程序从文本文件插入Oracle 10g中的表?
我正在Oracle 10g中尝试这个PL/SQL程序。从操作“C:\Oracle”读取文本文件(数据),并使用PLSQL脚本将其加载到Oracle表中。但是,我得到了以下错误:如何使用PLSQL程序从文本文件插入Oracle 10g中的表?,sql,oracle,plsql,oracle10g,Sql,Oracle,Plsql,Oracle10g,我正在Oracle 10g中尝试这个PL/SQL程序。从操作“C:\Oracle”读取文本文件(数据),并使用PLSQL脚本将其加载到Oracle表中。但是,我得到了以下错误: 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
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;
这一行可能需要小写字母“r”
namesfile := UTL_FILE.FOPEN('FILESDIR1','NAMES2.TXT','r'); -- open in read mode
^
您可以尝试另一种方法:
创建一个映射到文件的表来读取文件,然后从外部将选择插入到表中
(或者您甚至不需要将其插入另一个表?您的循环不会检查文件的结尾,因此从逻辑上讲,文件读取操作会在某个点引发异常,这可能就是您得到的异常
此外,您还必须检查目录(filedir1)是否指向正确的OS目录,并且您已被授予访问该目录的权限,并且该文件位于该OS目录(而不是本地文件系统)上
顺便说一句,在某些情况下,您可以更好地使用SQL Loader在表中大容量加载数据,尤其是在文件较大的情况下,因为您可以直接使用SQL Loader在数据文件中直接加载数据,从而绕过SQL层(由INSERT语句生成)总之。我假设您已经创建了一个目录?请参阅我对该主题的另一个问题的回答:请参阅下面的链接以了解更多详细信息(目录和所有…):它必须是小写的“r”。你原来的问题是大写的。