UTL_FILE
- 提供读写操作系统文本文件程序。
函数名 | 参数类型 | 结果类型 | 描述 |
fclose | file utl_file.file_type | utl_file.file_type | 关闭由文件句柄标识的打开文件 |
fclose_all | null | void | 关闭会话的所有打开的文件句柄 |
fcopy | src_location text, src_filename text, dest_location text, dest_filename text | void | 将文件的连续部分复制到新创建的文件,如果省略了start_line和end_line参数,则会复制整个文件 |
fcopy | src_location text, src_filename text, dest_location text, dest_filename text, start_line integer, end_line integer |
void | 将文件的连续部分复制到新创建的文件,如果省略了start_line和end_line参数,则会复制整个文件 |
fcopy | src_location text, src_filename text, dest_location text, dest_filename text, start_line integer, end_line integer | void | 将文件的连续部分复制到新创建的文件,如果省略了start_line和end_line参数,则会复制整个文件 |
fflush | file utl_file.file_type | void | 物理地将待处理数据写入由文件句柄标识的文件 |
fgetattr | location text, filename text, OUT fexists boolean, OUT file_length bigint, OUT blocksize integer | record | 读取并返回磁盘文件的属性 |
fopen | location text, filename text, open_mode text | utl_file.file_type | 打开一个文件 |
fopen | location text, filename text, open_mode text, max_linesize integer | utl_file.file_type | 打开一个文件 |
fopen | location text, filename text, open_mode text, max_linesize integer, encoding name | utl_file.file_type | 打开一个文件 |
fremove | location text, filename text | void | 删除磁盘文件 |
frename | location text, filename text, dest_dir text, dest_file text | void | 将现有文件重命名为新名称 |
frename | location text, filename text, dest_dir text, dest_file text, overwrite boolean | void | 将现有文件重命名为新名称 |
get_line | file utl_file.file_type, OUT buffer text | text | 从由文件句柄标识的打开文件中读取文本,并将文本放入输出缓冲区参数中 |
get_line | file utl_file.file_type, OUT buffer text, len integer | text | 从由文件句柄标识的打开文件中读取文本,并将文本放入输出缓冲区参数中 |
is_open | file utl_file.file_type | boolean | 测试文件句柄是否标识了打开的文件 |
new_line | file utl_file.file_type | boolean | 将一个或多个行终止符写入由输入文件句柄标识的文件 |
new_line | file utl_file.file_type, lines integer | boolean | 将一个或多个行终止符写入由输入文件句柄标识的文件 |
put | file utl_file.file_type, buffer anyelement | boolean | 将存储在buffer参数中的文本字符串写入由文件句柄标识的打开文件 |
put | file utl_file.file_type, buffer text | boolean | 将存储在buffer参数中的文本字符串写入由文件句柄标识的打开文件 |
put_line | file utl_file.file_type, buffer anyelement | boolean | 将存储在buffer参数中的文本字符串写入由文件句柄标识的打开文件。使用平台特定的行终止符 |
put_line | file utl_file.file_type, buffer anyelement, autoflush boolean | boolean | 将存储在buffer参数中的文本字符串写入由文件句柄标识的打开文件。使用平台特定的行终止符 |
put_line | file utl_file.file_type, buffer text | boolean | 将存储在buffer参数中的文本字符串写入由文件句柄标识的打开文件。使用平台特定的行终止符 |
put_line | file utl_file.file_type, buffer text, autoflush boolean | boolean | 将存储在buffer参数中的文本字符串写入由文件句柄标识的打开文件。使用平台特定的行终止符 |
putf | file utl_file.file_type, format text | boolean | 格式化的PUT过程,类似于受限的printf() |
putf | file utl_file.file_type, format text, arg1 text | boolean | 格式化的PUT过程,类似于受限的printf() |
putf | file utl_file.file_type, format text, arg1 text, arg2 text | boolean | 格式化的PUT过程,类似于受限的printf() |
putf | file utl_file.file_type, format text, arg1 text, arg2 text, arg3 text | boolean | 格式化的PUT过程,类似于受限的printf() |
putf | file utl_file.file_type, format text, arg1 text, arg2 text, arg3 text, arg4 text | boolean | 格式化的PUT过程,类似于受限的printf() |
putf | file utl_file.file_type, format text, arg1 text, arg2 text, arg3 text, arg4 text, arg5 text | boolean | 格式化的PUT过程,类似于受限的printf() |
cat > /tmp/test.txt
111aaa
222bbb
333ccc
444ddd
555eee
666fff
777ggg
888hhh
999iii
101010jjj
111111kkk
atlasdb=# insert into utl_file.utl_file_dir values ('/tmp');
2) 文件复制
atlasdb=# select utl_file.fcopy('/tmp', 'test.txt', '/tmp', 'test_cp.txt',3,6);
[root@localhost tmp]# cat test_cp.txt
333ccc
444ddd
555eee
666fff
3) 关闭UTL_FILE 打开的文件
atlasdb=# do language plpgsql $$
atlasdb$# declare
atlasdb$# vInHandle utl_file.file_type;
atlasdb$# vOutHandle utl_file.file_type;
atlasdb$# begin
atlasdb$# vInHandle := utl_file.fopen('/tmp', 'test.txt', 'R');
atlasdb$# vOutHandle := utl_file.fopen('/tmp', 'test_cp.txt', 'W');
atlasdb$# raise notice 'OPEN';
atlasdb$# IF utl_file.is_open(vInHandle) THEN
atlasdb$# utl_file.fclose(vInHandle);
atlasdb$# END IF;
atlasdb$# IF not utl_file.is_open(vInHandle) THEN
atlasdb$# raise notice 'close';
atlasdb$# END IF;
atlasdb$# end;
atlasdb$# $$;
NOTICE: OPEN
NOTICE: close
4) 查看文件的属性
atlasdb=# do language plpgsql $$
atlasdb$# declare
atlasdb$# ex boolean;
atlasdb$# flen int;
atlasdb$# bsize int;
atlasdb$# begin
atlasdb$# -- utl_file.fgetattr('/tmp'::text, 'test.txt'::text, ex, flen, bsize);
atlasdb$# select * from utl_file.fgetattr('/tmp'::text, 'test.txt'::text) into ex,flen,bsize;
atlasdb$# IF ex THEN
atlasdb$# raise notice 'File Exists';
atlasdb$# ELSE
atlasdb$# raise notice 'File Does Not Exist' ;
atlasdb$# END IF;
atlasdb$# raise notice 'FileLength: %' , flen;
atlasdb$# raise notice 'BlockSize: %',bsize;
atlasdb$# end;
atlasdb$# $$;
NOTICE: File Exists
NOTICE: FileLength: 83
NOTICE: BlockSize: 4096
5) 读写文件
atlasdb=# do language plpgsql $$
atlasdb$# declare
atlasdb$# vInHandle utl_file.file_type;
atlasdb$# vOutHandle utl_file.file_type;
atlasdb$# vNewLine VARCHAR2(250);
atlasdb$# begin
atlasdb$# vInHandle := utl_file.fopen('/tmp', 'test.txt','R');
atlasdb$# LOOP
atlasdb$# BEGIN
atlasdb$# select * from utl_file.get_line(vInHandle)into vNewLine ;
atlasdb$# raise notice '%', vNewLine;
atlasdb$# EXCEPTION
atlasdb$# WHEN OTHERS THEN
atlasdb$# EXIT;
atlasdb$# END;
atlasdb$# END LOOP;
atlasdb$# utl_file.fclose(vInHandle);
atlasdb$# vOutHandle := utl_file.fopen('/tmp', 'test_cp.txt', 'w');
atlasdb$# perform utl_file.put_line(vOutHandle, 'hello lsxy');
atlasdb$# utl_file.fflush(vOutHandle);
atlasdb$# utl_file.fclose(vOutHandle);
atlasdb$# end;
atlasdb$# $$;
NOTICE: 111aaa
NOTICE: 222bbb
NOTICE: 333ccc
NOTICE: 444ddd
NOTICE: 555eee
NOTICE: 666fff
NOTICE: 777ggg
NOTICE: 888hhh
NOTICE: 999iii
NOTICE: 101010jjj
NOTICE: 111111kkk
DO
[root@localhost tmp]# cat test_cp.txt
hello lsxy
文件删除:
atlasdb=# do language plpgsql $$
atlasdb$# declare
atlasdb$# begin
atlasdb$# utl_file.fremove('/tmp', 'test_cp.txt');
atlasdb$# end;
atlasdb$# $$;
DO
6) 文件重命名
atlasdb=# do language plpgsql $$
atlasdb$# declare
atlasdb$# begin
atlasdb$# perform utl_file.frename('/tmp','test.txt','/tmp','test1.txt',TRUE);
atlasdb$# end;
atlasdb$# $$;
DO
utl_file.new_line:
do language plpgsql $$
declare
vInHandle utl_file.file_type;
begin
vInHandle := utl_file.fopen('/tmp', 'test.txt', 'w');
perform utl_file.new_line(vInHandle, 2);
utl_file.fclose(vInHandle);
end;
$$;
atlasdb=# do language plpgsql $$
atlasdb$# declare
atlasdb$# my_world varchar2(4) := 'Zork';
atlasdb$# vInHandle utl_file.file_type;
atlasdb$# begin
atlasdb$# vInHandle := utl_file.fopen('/tmp', 'test.txt', 'w');
atlasdb$# perform utl_file.PUTF(vInHandle, 'Hello, world! I come from %s with %s.\n',my_world);
atlasdb$# perform utl_file.PUT_line(vInHandle, 'Hello, world!');
atlasdb$# vInHandle := utl_file.fclose(vInHandle);
atlasdb$# end;
atlasdb$# $$;
DO