批量数据文件用sqlldr导数据到oracle中-创新互联

  使用sqlload导文本数据到oracle中想必很多人多使用过,但是倘若有几百或者几千个数据文本,或者实时有文本数据产生。这种场景如何批量导入oracle呢,下面就来讲解下我处理的方式。

成都创新互联专业为企业提供冷水江网站建设、冷水江做网站、冷水江网站设计、冷水江网站制作等企业网站建设、网页设计与制作、冷水江企业网站模板建站服务,十余年冷水江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

  1.shell脚本LoadData.sh如下

#!/bin/bash data_dir=/home/bea/datasource/warn-log/dayflow  # 文本数据目录 data_dir_bak=/home/bea/datasource/warn-log/dayflow_bak shell_dir=/home/bea/script while [ 1 ] do cd $data_dir if [ `pwd` == $data_dir ] then    filelist=`ls -rt | grep dayflow.log_.`  #数据文本文件名匹配 fi #echo $filelist cd $shell_dir if [ `pwd` == $shell_dir ] then    for file in $filelist    do        date=`date "+%Y%m%d %H:%M:%S"`        export LoadFileName=$data_dir"/"$file    #这个地方很重要,要加载变量到环境中        echo "Time is $date ,开始导$LoadFileName数据"        sqlldr user_1/123456@213_db control=dayflow.log.ctl BAD=dayflow.log.bad        echo "Time is $date ,$LoadFileName数据导入完毕"                echo "开始备份文件$file"        mv $LoadFileName $data_dir_bak        echo "$file备份完毕"    done fi done

这个地方最应该要注意的是

export LoadFileName=$data_dir"/"$file

这里将LoadFileName (导入oracle 的文本,绝对路径)这个变量 export到linux环境中,这样sqlload的控制文件就可以读到这个变量并进行导入

2.sqlldr控制文本dayflow.log.ctl

load data CHARACTERSET AL32UTF8 infile '$LoadFileName' APPEND into table user_1.BIL_FLUX_HIGH_CUR fields terminated by '|' trailing nullcols (ACCS_NBR "TRIM(:ACCS_NBR)", DATE_ID "TRIM(:DATE_ID)", TOTAL_FLUX "TRIM(:TOTAL_FLUX)", sys_date "sysdate")

请注意 infile '$LoadFileName',这里就是shell中 刚才export的变量,通过这种方式就可以以变量的形式传入文件名,那么批量导入也就是一个循环的操作。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:批量数据文件用sqlldr导数据到oracle中-创新互联
URL地址:http://myzitong.com/article/dshjic.html