LINUX下shell脚本如何执行 sql脚本 到DB2数据库?

LINUX下shell脚本如何执行 sql脚本 到DB2数据库?,第1张

1、在gedit中编写.sh格式文件,保存为a.sh。

2、在终端调用脚本,定位到目录,然后输入。

3、编写的if/else如下:if和 之间的代码?ls -l a.sh是用来判断当前的目录下是否存在a.sh这个文件。if和else的基本格式如下所示。

4、在终端调用的结果如下,可以看到输出了。

5、再看一个if/else脚本如下脚本,if/else格式和上面格式一致,重点看下 if 和 ;间的那个命令,命令开始以 [,后面有4个参数 $1,=,me,]。

6、输出的结果如下所示。

这个问题你可能通过查询oracle的系统表,例如all_all_tables,用这些对象的列表生成一批数据库删除对象的语句,然后将这些语句存到文件,用sqlplus的文件参数执行这一批语句。

1、简单的单列

#!/bin/sh

sqlplus 'user001/12345678'<<EOF

set define off

set hea off

spool vip1.txt

select username from ACCOUNT where LEVEL=7

spool off

quit

EOF

sed -i 's/[ ]*//g' ~/vip1.txt

sed -i '/^$/d' ~/vip1.txt

sed -i '1d' ~/vip1.txt

sed -i '$d' ~/vip1.txt

scp -P22 ~/vip1.txt root@172.16.1.2:/root

2、复杂的多列

#!/bin/sh

cid=$1

today=`date +%Y-%m-%d-%H.%M`

ym=`date +%Y%m`

ymd=`date -d -1days +%Y%m%d`

last_ym=`date -d last-month +%Y%m`

next_ym=`date -d next-month +%Y%m`

file=chat_recorder_${cid}_20140707-11.xls

if [[ $1 == '' ]]then

echo "Usage: $0 company_id "

exit 0

fi

sqlplus 'user002/12345678' <<EOF

set linesize 200

set term off verify off feedback off pagesize 999

set markup html on entmap ON spool on preformat off

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'

spool ${file}

select a.*,b.* from recorder_${ym} a,t_${ym} b where a.company_id='$cid' and a.create_time between TO_DATE('2014-07-07 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and TO_DATE('2014-07-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and a.chat_id=b.chat_id order by b.chat_id

spool off

quit

EOF

sed -i '/select/d' $file

zip -r ${file}.zip $file

scp -P22 ${file}.zip root@172.16.1.5:/opt


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10646506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存