小弟刚开始学习,模仿着写了一个循环读取文件内容的过程,求帮助 遍历cursorselect读取文件内容 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. 你的OS 环境是什么,如果是 LINUX 的话,检查一下权限,看看 oracle 用户有没有对这个文件的 r 权限。2.先读一个文件试试,看看有什么问题,最好是一个小文件,行数少的那种。 过程写没问题补充楼上的,还需要查看TEMP是已经建好的Directories TEMP是谁创建的,对于你当前数据库用户是否有read,write on directory的权限。 赖我,忘记说了,不是linux 单独的一个文件读写完全没问题,就是想问下,按照上面行么? sys 用户创建的,给了路径操作的权限了 在第一个文件关闭后,你加一个延时,再读第二个文件。你百度下 dbms_lock.sleep 的用法。 谢谢!学习了!现在是第一个文件能打开但是读取不了,文件就是txt的,里面有几个字母,就一行 谢谢!学习了!现在是第一个文件能打开但是读取不了,文件就是txt的,里面有几个字母,就一行看看这个文件的权限,如果权限没有问题,你先把这个文件移走,看看其他的文件,是不是可以连续读取。 SQL> create table AEI_FILE_LIST (FILENAME varchar2(20),FILEDATE varchar2(20));表已创建。SQL> insert into AEI_FILE_LIST values('a.txt','');已创建 1 行。SQL> insert into AEI_FILE_LIST values('b.txt','');已创建 1 行。SQL> commit;提交完成。SQL> create or replace directory TEMP as 'D:\TEMP';目录已创建。SQL> create table test (a varchar2(100));表已创建。SQL> select * from a;select * from a *ERROR 位于第 1 行:ORA-00942: 表或视图不存在SQL> select * from test;未选定行SQL> select * from test;未选定行SQL> create or replace procedure q is 2 a_fname AEI_FILE_LIST.FILENAME%type; 3 a_fpath AEI_FILE_LIST.FILEDATE%type; 4 5 --用来遍历一个存放着文件名称的表 6 CURSOR CUR_FILENAME IS 7 SELECT FILENAME FROM AEI_FILE_LIST; 8 filehandle utl_file.file_type; 9 filebuffer varchar(1000); 10 11 BEGIN 12 open CUR_FILENAME; 13 loop 14 fetch CUR_FILENAME into a_fname; 15 exit when CUR_FILENAME%notfound; 16 --TEMP是已经建好的Directories,a_fname是一个正确的文件名 17 filehandle := utl_file.fopen('TEMP',a_fname,'r'); 18 loop 19 BEGIN 20 --读取文件内容,都是TXT格式的 21 utl_file.get_line(filehandle,filebuffer); 22 --内容插到另一个表的一个字段中,TEST表已建好,字段a已建 23 INSERT INTO TEST(A) VALUES(filebuffer); 24 EXCEPTION 25 WHEN no_data_found THEN 26 exit; 27 End; 28 end loop; 29 utl_file.fclose(filehandle); 30 end loop; 31 close CUR_FILENAME; 32 COMMIT; 33 end; 34 /过程已创建。SQL> exec q;PL/SQL 过程已成功完成。SQL> select * from test;A--------------------------------------------------------------------------------aaaaaaaaaabbbbbbbbbbb 存储过程中怎么添加“set serveroutput on”啊??? 求一个工具 请问这种需求的sql语句怎么写? 数据库导入问题 利用Oracle之SQLPLUS的spool导出文本文件的数据格式问题 下面的语句错在哪里~ 请高手解答 oracle本来用的挺好的,后来连接出现了无法解析连接描述符中制定的SID 那里有以下SQL Expert for oracle版本下载?(高分酬谢) oracle 11g sql developer 导入excel文件报12899 要实现以下表结构怎么弄? 一个老问题,sqlplus连接报错:协议适配器错误,请帮帮忙,谢谢!
2.先读一个文件试试,看看有什么问题,最好是一个小文件,行数少的那种。
补充楼上的,还需要查看
TEMP是已经建好的Directories TEMP是谁创建的,对于你当前数据库用户是否有read,write on directory的权限。
现在是第一个文件能打开但是读取不了,文件就是txt的,里面有几个字母,就一行
现在是第一个文件能打开但是读取不了,文件就是txt的,里面有几个字母,就一行看看这个文件的权限,如果权限没有问题,你先把这个文件移走,看看其他的文件,是不是可以连续读取。
select * from a
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在
SQL> select * from test;未选定行SQL> select * from test;未选定行SQL> create or replace procedure q is
2 a_fname AEI_FILE_LIST.FILENAME%type;
3 a_fpath AEI_FILE_LIST.FILEDATE%type;
4
5 --用来遍历一个存放着文件名称的表
6 CURSOR CUR_FILENAME IS
7 SELECT FILENAME FROM AEI_FILE_LIST;
8 filehandle utl_file.file_type;
9 filebuffer varchar(1000);
10
11 BEGIN
12 open CUR_FILENAME;
13 loop
14 fetch CUR_FILENAME into a_fname;
15 exit when CUR_FILENAME%notfound;
16 --TEMP是已经建好的Directories,a_fname是一个正确的文件名
17 filehandle := utl_file.fopen('TEMP',a_fname,'r');
18 loop
19 BEGIN
20 --读取文件内容,都是TXT格式的
21 utl_file.get_line(filehandle,filebuffer);
22 --内容插到另一个表的一个字段中,TEST表已建好,字段a已建
23 INSERT INTO TEST(A) VALUES(filebuffer);
24 EXCEPTION
25 WHEN no_data_found THEN
26 exit;
27 End;
28 end loop;
29 utl_file.fclose(filehandle);
30 end loop;
31 close CUR_FILENAME;
32 COMMIT;
33 end;
34 /过程已创建。
SQL> exec q;PL/SQL 过程已成功完成。SQL> select * from test;A
--------------------------------------------------------------------------------aaaaaaaaaa
bbbbbbbbbbb