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 ;

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值