【发布时间】:2013-01-27 05:14:16
【问题描述】:
我正在学习 Oracle SQL 开发人员。
我正在做的是从文件夹中逐行读取文本文件。 然后将数据插入到 SQL 表中。
我能够编译我的 PROCEDURE,但是它似乎没有将数据插入到文件中。
Create or Replace PROCEDURE Rfile is
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('C:\Projects\','testdatabinary.txt','R');
IF UTL_FILE.IS_OPEN(f) THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(f,s);
IF s IS NULL THEN
EXIT;
END IF;
INSERT INTO DATAINSERT
(COLUMN1, COLUMN2)
VALUES
(s, 'testdatabinary');
END;
END LOOP;
COMMIT;
END IF;
END;
我有一个带有两个 varchar(200) 类型 cols 的表 DATAINSERT
我不太确定 PROCEDURE 没有向表中插入数据的原因
我刚刚检查了错误消息
Error starting at line 1 in command:
EXEC Rfile
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at "SYSTEM.RFILE", line 5
【问题讨论】:
-
你的第一行是NULL吗?您可以使用 dbms_output.put_line(s) 来查看它正在读取的内容。
-
不是,是目录路径的问题。我检查并准确复制并粘贴了文件目录:(。但是,它仍然存在问题
-
服务器上是否存在该文件/目录?没有发现代码有任何问题。
-
是的!所以我创建了像“MYDIR”这样的路径名,然后像 f := UTL_FILE.FOPEN('MYDIR','testdatabinary.txt','R');
-
然后我收到类似“01403.00000 - “未找到数据”的错误
标签: sql oracle11g oracle-sqldeveloper utl-file