Oracle:关于UTL_FILE的初阶使用(一)

1 Comment

如题,本文呈现UTL_FILE的基本使用。

1.目录对象
在通过SQL*Plus在Oracle数据库中创建目录对象(Directory Object)之前,需要在操作系统上确认目标路径存在,如果不存在,需要创建,语法:mkdir dir_path
创建完文件系统路径后,还需要注意拥有人、拥有组,以及权限的正确、适当。
否则,在后面使用“UTL_FILE”的时候会报错。

使用PL/SQL包:UTL_FILE之前,需要创建目录对象:

如上所示,我的环境中已经有了目录对象。
如果没有,则需要创建,语法:
create directory dir_name as ‘dir_path’;
如果使用目录对象的用户不是sys,那么还需要授权:
grant read,write on directory dir_name to user_name;
grant read,write on directory dir_name to public;

2.执行UTL_FILE包的权限
如果操作永福不是sys,则需要授权:
grant execute on utl_file to user_name;

3.使用UTL_FILE
代码:
DECLARE
v_filename utl_file.file_type;
v_directory varchar2(50) := ‘UTL_FILE_DIR’;
BEGIN
— Now Open the File
v_filename := utl_file.fopen(v_directory,’scott_objects.txt’,’a’);
dbms_output.put_line(‘### The File has been OPENED. [DBMS OUTPUT] ###’);
utl_file.put_line(v_filename,’### The File has been OPENED. [DBMS OUTPUT] ###’);
for middle_data in (select owner,object_id,object_name,object_type,status,to_char(created,’yyyy-mon-dd hh24:mi:ss’) created,to_char(last_ddl_time,’yyyy-mon-dd hh24:mi:ss’) last_ddl_time from dba_objects where owner=’SCOTT’ order by 2)
loop
utl_file.put_line(v_filename,middle_data.owner || ‘ – ‘ || middle_data.object_id || ‘ – ‘ || middle_data.object_name || ‘ – ‘ || middle_data.object_type || ‘ – ‘ || middle_data.status || ‘ – ‘ || middle_data.created || ‘ – ‘ || middle_data.last_ddl_time);
end loop;
utl_file.fclose(v_filename);
end;

源数据:

————————————————————————————
Ending。

打赏

1
说点什么

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
HelloDBA Recent comment authors

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
提醒
HelloDBA
游客
HelloDBA

impdp 在运行的时候也会调用UTL_FILE的相关方法,所以,也有可能因为UTL_FILE的一些方法的异常,导致impdp导入失败。