shell脚本sqlplus执行sql输出到文件
Linux系统中,通过shell脚本之心相应的sql语句,将查询结果输出到对应为文件中
·
在日常运维工作中,或者linux相关开发中,我们有时候会有业务场景需要在后台直接查询oracle数据库,将查询结果按照指定格式输出到文件中,然后发送给下游系统解析和使用,废话不多说,直接上案例:
1. 创建shell脚本文件
[oracle@localhost ~]$ cd ~/tmp/ #进入到我自己的临时目录下,可自定义
[oracle@localhost tmp]$ touch exp_to_file.sh #创建shell文件
[oracle@localhost tmp]$ ll #查看文件是否创建成功
总用量 0
-rw-r--r--. 1 oracle oinstall 0 4月 28 06:29 exp_to_file.sh
[oracle@localhost tmp]$
2. 编辑脚本内容
[oracle@localhost tmp]$ vi exp_to_file.sh #进入编辑模式
#以下为脚本内容:
#!/bin/bash
sqlplus -s user_name/password@orcl <<EOF
set colsep , #分割符
set feedback off #回显本次sql命令处理记录条数
set heading off # 输出标题
set newp none #设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none
set pagesize 0 # 输出每页行数,为了避免分页设置为0
set linesize 200 # 每行大小,如果设置太小,会分行,最好是超好输出最大值
set trimout on # 去除标准输出每行的拖尾空格
set termout off #显示脚本中的命令的执行结果
set echo on #设置运行命令是否显示语句
set numwidth 12 # 输出number类型域长度
#输出到指定文件中(注意需要绝对路径)
spool /home/oracle/tmp/query_res.txt
select user_name||','||user_id from tsys_user;
spool off
quit
EOF
# 编辑完成后保存并退出
3. 关于脚本内容补充说明
脚本中的user_name和password改为实际数据库用户名和密码,文件编号内容记录要赋予执行权限:chmod 755 ./exp_to_file.sh
4. 执行该脚本看效果
[oracle@localhost tmp]$ ./exp_to_file.sh #执行脚本
[oracle@localhost tmp]$ ll
总用量 140
-rwxr-xr-x. 1 oracle oinstall 810 4月 28 06:58 exp_to_file.sh
-rw-r--r--. 1 oracle oinstall 136479 4月 28 06:59 query_res.txt #生成的文件
5. 查看生成结果文件
[oracle@localhost tmp]$ tail -n5 query_res.txt #查看文件
王**,666666
潘**,88888
李**,77777
秦**,11111
审**,22333
[oracle@localhost tmp]$
到此可以看到,脚本成功执行,并将查询结果输出在文件中.
更多推荐
已为社区贡献4条内容
所有评论(0)