使用utl_file包通过oracle存储过程在file.txt中发送数据

时间:2012-01-15 05:14:36

标签: encoding database packages oracle

我想使用utl_file包通过oracle存储过程将file.txt中的数据发送到数据库中的表,

file.txt包含:

QRIFR6M Index,BID,0.7875, aaa
QRIFR9M Index,BID,0.8625, bbb
QRIFR1Y Index,BID,0.975, ccc
QRIFROVN Index,ASK,0.74375, ddd
QRIFR1W Index,ASK,0.78125, hhh
QRIFR1M Index,ASK,0.90625, hhh

我写了这段代码来打开文件并关闭它,但现在如何读取数据?在哪里写入读取和发送数据的代码?我必须使用数组或有更好的解决方案?

CREATE DIRECTORY sampledata AS 'c:sampledata';
declare
f utl_file.file_type;
s varchar2(200);
begin
f := utl_file.fopen('SAMPLEDATA','test.txt','R');
utl_file.get_line(f,s);
utl_file.fclose(f);
dbms_output.put_line(s);
end;

谢谢和问候

2 个答案:

答案 0 :(得分:2)

如果你想留在“oracle环境”(只有sql和plsql - 没有批处理文件),那么你可以考虑使用“外部表”。这些允许您读取文件,就像它是一个表 http://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm
http://www.adp-gmbh.ch/ora/misc/ext_table.html

答案 1 :(得分:1)

我建议使用SQL * Loader。请参阅此FAQutl_file.get_line很好,但您必须拆分输入以获取表插入的值。