shell脚本使用sqlplus,查数据库生成指定文件

一、指定格式

SAMS_DBURL=SAMS/Sump_2020
#!/bin/bash
returnValue=`
    sqlplus -S ${SAMS_DBURL}<< !
        set feedback off
        set heading off
        set linesize 800
        set trimspool on
        set pagesize 0 
        spool /sams/bbb/aaa.dat
            select TASKCODE||'|+|'||TASKNAME||'|+|'||PRIORITY from sys_task;
        quit;
    exit;
!`

echo ${returnValue}

# -S:去除多余项,简洁展示
# feedback:设置显示“已选择XX行”
# heading:输出标题城,缺省为off
# pagesize:每一页的行数,0表示不分页,缺省为24
# colsep:列与列之间的分隔符
# linesize:屏幕显示行宽,一般设置较大
# autotrace:允许对执行的sg1进行分析
# trimspool:去除重定向 (spooI)输出每行的拖尾空格,缺省为off
# termout:显示脚本中的命令执行结果
# spool:输出到指定文件

# 常用到的脚本处理方法。
# sed 's/[ ]\{2,\}\|[ ]\{1,\}/ /g;/^$/d' /sams/bbb/aaa.dat | sed 's/[ \t]*$//g'
# awk '{print $1}' aaa.dat | sed "/^s/d"

这种写法可以在脚本中查询数据库信息,根据查询结果returnValue决定接下来要做什么事。

二、导出到Excell中

SAMS_DBURL=SAMS/Sump_2020
#!/bin/bash
returnValue=`
    sqlplus -S ${SAMS_DBURL}<< EOF
        set linesize 800
        set pagesize 1000
        set term off feedback off verify off
        set markup html on entmap ON spool on preformat off
        spool /sams/aaa/aaa.xls
            @sql.sq1
        spool off
    exit;
EOF`
echo ${returnValue}
# sql.sql
select t.TASKCODE TASKCODE,t.TASKNAME TASKNAME,t.PRIORITY PRIORITY,t.CONTENT CONTENT,t.STATUS STATUS,t.TASKCLASS TASKCLASS,to_char(t.EFFICIENTDATE,'yyyy-mm-dd') EFFICIENTDATE from sys_task t;

shell脚本使用sqlplus,查数据库生成指定文件_第1张图片

你可能感兴趣的:(运维)