[shell脚本]shell中使用sqlplus连接数据库方法

更新时间:2020年2月7日
最近需要写一个shell脚本,基本需求是在shell脚本中使用sqlplus连接数据库,同时实现本地和子程序的信息交互,并且将查询的信息记录到本地文件。
本身对shell语言不是很熟,语法都是边看边写。

  • 基本思路是:
  1. 在本地写好sql语句,生成sql文件
  2. 使用sqlplus连接数据库,在子程序中调用sql文件进行查询,同时将查询结果重定向到文件中。
  3. 在循环中更新sql语句,继续查询并记录。
  • 核心语句在这里记录一下:
echo "开始查询数据库${sql_chuan[$num_now]}"
${sql_chuan[$num_now]} << EOF >> xx.log
@./temp.sql;
exit;
EOF
echo "------------------------" >> xx.log
echo "数据库查询完成!"

EOF作为自定义终止符,主要作用有两个:

1、Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。
回顾一下<<的用法。当shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。

如下面代码还有我上面的连接sqlplus时,在子程序中的输入。

cat << EOF > eof.txt
> this is eof
> eof
> content
> eof end
> EOF

2、用来注释shell中的整段代码

形如下面的例子中,:是shell中的空语句

: << COMMENTBLOCK   
shell脚本代码段
COMMENTBLOCK

参考文档:
https://blog.csdn.net/sprita1/article/details/42676307

你可能感兴趣的:([shell脚本]shell中使用sqlplus连接数据库方法)