用shell脚本写sqlldr入库,如何在sqlldr里面引入外部变量

本文介绍了如何在文件内容入库过程中,通过创建自定义ctl文件并替换文件名,解决因无法获取文件名而难以直接入库的问题。详细步骤包括编写固定文件名的ctl文件,临时替换文件名,使用sqlldr加载数据,以及文件操作的清理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的应用场景:文件内容入库,但是文件名字不能获取到回调到数据库中,可以重新定义一个新的ctl文件,用心的进行入库

ctl文件编写ACCT.ctl

load data
Append into table TBCS.ACCT
fields terminated by '|'
TRAILING NULLCOLS
(
  acct_id,
  cust_id,
  payment_type,
  REMARK,
  CUST_CLASS,
  ACCT_CODE,
  filename constant "file_name",
  intime sysdate
)

在ctl文件中,先给文件名固定一个值,

filename=文件名字

cat ACCDATAISSUED.ctl| sed "s/file_name/${filename}/g" > newctl.ctl

$ORACLE_HOME/bin/sqlldr USERID=$dbstr CONTROL=newctl.ctl DATA=`echo "$filename"` bad=ACCT_bad.log  Log=$FILE_LOG_INS ERRORS=999

用完新的ctl文件后删掉,等下次用的时候再重新生成

rm -f newctl.ctl

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值