csv文件是这样的~
0001,1001,1
0002,1002,0
0003,1003,1
0004,1004,2
0005,1005,0
0006,1006,2
0007,1007,1
pl/sql 改如何读取啊~~~
0001,1001,1
0002,1002,0
0003,1003,1
0004,1004,2
0005,1005,0
0006,1006,2
0007,1007,1
pl/sql 改如何读取啊~~~
解决方案 »
- oracle如何导入dmp
- Oracle 关于long raw数据类型实际占用空间的问题
- LINUX下面安装oracle报错
- 32MB的.dmp文件为什么导入后10G都不够
- 菜鸟问题急!plsql中如何把oracel数据库的表结构和表数据导入到access数据库中去,保存为*.mdb文件
- Linux 环境 创建赋权job
- 请教各位大虾:怎样获得Access数据库里表中字段的属性(size,type等)!在线等待!急!必有重谢!
- ★★如何获得没有被提交的事务和会话★★
- 高手帮忙,关于inner jion。
- ora-12500:TNS 监听程序无法启动专用服务器进程
- split partition 用法
- SQL难题,困惑中,期待高手献招
不用工具~
我想知怎么写代码~
做法类似
其次,创建一个ctl文件,文件内容如下:
load data --控制文件标识
infile 'f:\stu.txt' --导入原文件
append into table s_user --向表中追加记录(insert(默认)、append、replace)
fields terminated by X'09' --字段分隔符(tab)
(pname,pbirth date "YYYY-MM-DD",psex)--导入对应字段及字段类型 最后,在dos下,使用sqlldr
Sqlldr chao/ok@qx control=f:/test.ctl log=f:\test.log
sql>alter system set utl_file_dir='c:\temp' scope=spfile;2、重启数据库使参数生效。3、生成一个测试的文件test.csv,放入服务器c:\temp,文件内容如下:
1,zhang shan
2,li shi
3,wang wu4、创建一个存储csv数据的表testcsv。
sql>create table testcsv(id number,name varchar2(20));5、创建一存储过程readcsv
CREATE OR REPLACE PROCEDURE readcsv(i_filename VARCHAR2) IS
f utl_file.file_type;
buf VARCHAR2(200);
v_id pls_integer;
v_name varchar2(20); FUNCTION getStrByPos(i_str VARCHAR2, i_pos PLS_INTEGER) RETURN VARCHAR2 IS
item VARCHAR2(200);
str VARCHAR2(200);
BEGIN
str := ',' || i_str || ',';
FOR i IN 1 .. length(str) - length(REPLACE(str, ',')) - 1 LOOP
item := substr(str,
instr(str, ',', 1, i) + 1,
instr(str, ',', 1, i + 1) - instr(str, ',', 1, i) - 1);
EXIT WHEN i = i_pos;
END LOOP;
RETURN item;
END;
BEGIN
f := utl_file.fopen('c:\temp', i_filename, 'R');
LOOP
BEGIN
utl_file.get_line(f, buf);
v_id := getStrByPos(buf, 1);
v_name := getStrByPos(buf, 2);
INSERT INTO testcsv VALUES (v_id, v_name);
EXCEPTION
WHEN no_data_found THEN
EXIT;
END;
END LOOP;
COMMIT;
utl_file.fclose(f);
END;6、执行存储过程
sql>execute readcsv('test.csv');