shell 脚本读取数据库示例

---------------简单能运行的例子-----------------------------
#shell use database test
values=`sqlplus -s hmfs/hmfs@hmfs <<EOF
 select  a.rowid,a.begin_date,a.trans_kind,a.trans_kind_name from    tb_int_fac_subject a   where rownum< 2;
 exit
 EOF`
echo "The number of rows is" ${values}.

------------------------------------------------------- ----

------去掉表头 用域分隔符分开 并用 awk 分开处理 然后循环打印 ----

#well use database test
values=`sqlplus -S hmfs/hmfs@hmfs <<  EOF
 set heading off
set pagesize 0;
set feedback off;
set verify off;
set echo off;
 select  rownum,a.rowid,a.begin_date,a.trans_kind,a.subject_code,'endrow'  from    tb_int_fac_subject a   where rownum< 5 ;
 exit
 EOF;`
echo  ${values} | awk -F "endrow" '
        {
            for (i=1; i<=NF-1; i++)
            {
               print $i
            }
        }' > rs

-----------------------------------------------------------------

 1。set feedback

有三种方式:

          set feedback on

          set feedback off

          set feedback n

默认的当一条sql发出的时候,oracle会给一个反馈,比如说创建表的时候,如果成功,命令行会返回类似:Table created的反馈,又比如执行一个pl/sql成功的时候,命令行会返回:PL/SQL procedure successfully completed 。当载脚本中运行很多语句的时候,一般将feedback设为off。

set feedback n:当一条sql语句返回n或者大于n行记录的时候,就会有feedback,比如:set feedback 5,当返回记录等于或多于5行的时候会有类似8 rows selected.的反馈.如果返回行少于5则没有此反馈。

 

2。set termout

有两种形式:

          set termout on

           set termout off

当设置为set termout off的时候就会忽略sql语句的输出如果这条sql是在脚本中运行的话。也就是说如果命令不在脚本中运行,即使设置为set termout off,仍然会返回sql的结果。

 

3。set heading

有两种形式:

           set heading on

            set heading off

Setting the heading specifies whether column headings (names) are printed or not.

设置为set heading off的时候不显示列标题。

原文地址:https://www.cnblogs.com/heling/p/2585017.html