本文将分享oracle存储过程ETL执行方法,shell执行oracle环境的sql语句方法。
1、oracle存储过程ETL执行方法:使用sqlldr命令需要使用oracle数据库的连接串,即用户名、密码、域名,control文件、数据文件、bad文件、log文件等信息,格式为:sqlldr $username/$password@$域名/password control=$ctl_file data=$data_file bad=$bad_file
#!/bin/sh
#单个文件加载为例
username=vlog
DB_TNS=oldev19cl-scan.odbs.test.com:1421/test1234
password=test1234
crl_file=/home/vlog/aaa.ctl
data_file=/home/vlog/aaa.txt
bad_file=/home/vlog/aaa.bad
log_file=/home/vlog/aaa.log
#导数命令
sqlldr $username/$password@${DB_TNS} control=$ctl_file data=$data_file bad=$bad_file log=$log_file readsize=200000000 bindsize=200000000
2、shell执行oracle环境的sql语句,需要注意的是,正常在linux系统中,oracle数据库资源池环境,执行sql脚本是需要借助sqlplus命令来完成的,具体如下:
#登陆数据库
sqlplus $username/$password@${DB_TNS}
#执行sql语句
@/home/vlog/sss.sql
exit
上述步骤只适合手动执行,执行完了还需要执行exit
命令退出sqlplus命令。
使用如下方法可以在bash脚本中自动执行sql并自动退出sqlplus命令,继续执行后续的步骤。
#!/bin/bash
echo exit | sqlplus $username/$password@${DB_TNS} @/home/vlog/sss.sql >a.log
在sqlplus命令前面添加echo exit
后,就可以在执行该行sql语句后自动退出,并将执行的日志输出到a.log文件中。