简单的应用场景:文件内容入库,但是文件名字不能获取到回调到数据库中,可以重新定义一个新的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
本文介绍了如何在文件内容入库过程中,通过创建自定义ctl文件并替换文件名,解决因无法获取文件名而难以直接入库的问题。详细步骤包括编写固定文件名的ctl文件,临时替换文件名,使用sqlldr加载数据,以及文件操作的清理过程。
968

被折叠的 条评论
为什么被折叠?



