存储过程使用utl_file来读取,并用程序控制进行插入最好用sql lorder进行导入
解决方案 »
- C#,将DataTable中的数据批量导入到Oracle数据库中
- oracle 自定义函数间调用无法传参(急!!!)
- 急,急,急!
- 关于oracle erp 2次开发的问题,火急。
- 这个sql怎么写?
- 多个表 union all ,如何按以大到小的排序
- 大家讨论一下:EJB vs. DB store procedure
- 请教sql语句
- left join on问题:是否可以使用or
- oracle 11g 在不区分大小写的情况下,求出邮件地址中包含姓的员工信息。其中邮件以首字母大写的形式返回 怎么弄?
- C#下读取 UDL文件连接Oracle数据库的问题,请各位高手赏光,急!!!!
- 如何在ADO访问数据库时获取LONG型数据的一部分?(具体请进)
sql lorder 导入没有办法在程序中执行。
先修改或添加init.ora的UTL_FILE_DIR参数
例如:
utl_file_dir=G:\oracle\temp //保存文本的路径为G:\oracle\temp
此过程将用户FILE_OWNER的过程FILE_NAME的代码保存到G:\oracle\temp\TEXT.TXT中
create or replace procedure PRO_TO_TXT(FILE_OWNER VARCHAR2,FILE_NAME VARCHAR2)
is
file_handle utl_file.file_type;
STOR_TEXT VARCHAR2(4000);
N NUMBER;
I NUMBER;
begin
I:=1;
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER=FILE_OWNER AND NAME=FILE_NAME AND TYPE='PROCEDURE';
file_handle:=utl_file.fopen('G:\oracle\temp','test.txt','a');
utl_file.put_line(file_handle,'PROCEDURE NAME:'||FILE_NAME);
WHILE I<=N LOOP
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER=FILE_OWNER
AND NAME=FILE_NAME AND TYPE='PROCEDURE' AND LINE= I;
I:=I+1;
utl_file.put_line(file_handle,stor_text);
END LOOP;
utl_file.fclose(file_handle);
commit;
end PRO_TO_TXT;
/看一下utl_file包的使用说明
使用tab分隔。
恕我愚笨。
读取一行
然后根据tab符将字符串分割(用到这两个函数substr(),instr())
插入到表中具体的看utl_file包吧
2.定义数据文件,内容如:data.txt(也就是你的那个数据文件)
3.使用命令行 sqlldr 用户/口令@服务名 d:\ora\ctr.txt d:\ora\mm.log d:\ora\data.txt即可完成将数据文件中的数据装载到控制文件中所说的数据库表中!其中的:控制文件格式为:LOAD DATA
INFILE 'd:\ora\data.TXT'
APPEND
INTO TABLE aaa (这个是表的名称)
fields terminated by whitespace
(aa , 这些是字段
bb , 这些是字段
cc ) 这些是字段