在日常运维工作中,或者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 428 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 428 06:58 exp_to_file.sh
-rw-r--r--. 1 oracle oinstall 136479 428 06:59 query_res.txt  #生成的文件

5. 查看生成结果文件

[oracle@localhost tmp]$ tail -n5 query_res.txt  #查看文件
王**,666666                                                                                                                                                                                           
潘**,88888                                                                                                                                                                                           
李**,77777                                                                                                                                                                                              
秦**,11111                                                                                                                                                                                             
审**,22333                                                                                                                                                                                             
[oracle@localhost tmp]$ 

到此可以看到,脚本成功执行,并将查询结果输出在文件中.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐