首页 > 数据库 > > 高级包-UTL_FILE
--系统管理员向PG_DIRECTORY系统表中加入目录/temp/:
CREATE OR REPLACE DIRECTORY dir AS '/tmp/';
--打开一个文件并向文件中写入数据
DECLARE
f utl_file.file_type;
dir text := 'dir';
BEGIN
f := utl_file.fopen(dir, 'sample.txt', 'w');
PERFORM utl_file.put_line(f, 'ABC');
PERFORM utl_file.put_line(f, '123'::numeric);
PERFORM utl_file.put_line(f, '-----');
PERFORM utl_file.new_line(f);
PERFORM utl_file.put_line(f, '*******');
PERFORM utl_file.new_line(f, 0);
PERFORM utl_file.put_line(f, '++++++++');
PERFORM utl_file.new_line(f, 2);
PERFORM utl_file.put_line(f, '#######');
PERFORM utl_file.put(f, 'A');
PERFORM utl_file.put(f, 'B');
PERFORM utl_file.new_line(f);
PERFORM utl_file.putf(f, '[1 -> %s, 2 -> %s, 3 -> %s, 4 -> %s, 5 -> %s]', 'gaussdb', 'utl', 'file', 'get', 'line');
PERFORM utl_file.new_line(f);
PERFORM utl_file.put_line(f, '1234567890');
f := utl_file.fclose(f);
END;
/
--在上面写入的文件中读取数据。
DECLARE
f utl_file.file_type;
dir text := 'dir';
BEGIN
f := utl_file.fopen(dir, 'sample.txt', 'r');
FOR i IN 1..11 LOOP
RAISE INFO '[%] : %', i, utl_file.get_line(f);
END LOOP;
END;
/
-- 对文件句柄执行位置偏移,并获取文件的当前位置。
DECLARE
l_file utl_file.file_type;
l_buffer VARCHAR2(32767);
dir text := 'dir';
abs_offset number := 100;
rel_offset number := NULL;
BEGIN
l_file := utl_file.fopen(location => dir, filename => 'sample.txt',open_mode => 'R');
dbms_output.put_line('before fseek: current position is ' || utl_file.fgetpos(file => l_file)); -- before fseek: current position is 0
utl_file.fseek(file => l_file, absolute_offset=>abs_offset, relative_offset=>rel_offset);
dbms_output.put_line('fseek: current position is ' || utl_file.fgetpos(file => l_file)); -- fseek: current position is 100
utl_file.fclose(file=>l_file);
END;
/来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3155781/ ,如需转载,请注明出处,否则将追究法律责任。