sqlldr 批量生成CTL文件

用sqlldr导进数据时,需要编写CTL文件,如果有多个数据文件,我们手动去编写CTL文件,就很费事,那么我们可以通过数据动态生成CTL文件。
1、

----创建目录
---创建目录需要用管理员的权限,用sys用户
create or replace directory BLOB_FILE_DIR as 'D:\CTL';--windows系统路径

select * from dba_directories;  ----查看是否生成目录成功
注:在系统的D盘下如果没有生成文件夹CTL,需要手动建文件夹,否则 运行时会报错。

---授权
grant read,write on directory BLOB_FILE_DIR to gzj;--路径授权,添加对路径读、写权限
grant execute on utl_file to gzj;--utl_file包授权,添加执行权限



-----将CTL文本输出成单个文件
----利用游标
declare  
vc_table_name  varchar2(4000);
vc_filename     UTL_FILE.FILE_TYPE;
vc_get_ctltext clob;

cursor cur_yx_ctltext  is  
select ctltable_name ,ctl_text from TB_YX_CTL;  

begin 
   for i in cur_yx_ctltext loop
      vc_table_name:='O_GMM_PMS_GL_'||i.ctltable_name;  ------文件名称
      vc_get_ctltext:=i.ctl_text;    -------文本内容
      ---dbms_output.put_line(vc_table_name);
      vc_filename:= UTL_FILE.FOPEN('BLOB_FILE_DIR', vc_table_name||'.ctl' , 'w');   ---打开路径,文件写进内容
      UTL_FILE.PUT_LINE(vc_filename,vc_get_ctltext); 
      UTL_FILE.FCLOSE(vc_filename);
      end loop;
end ;

你可能感兴趣的:(sqlldr 批量生成CTL文件)