乌托邦博客

You see? Even death has a heart

« Client Security Solution 8.3 和 Microsoft Office 2007冲突宇信易诚招聘 »

利用Shell从Oracle、DB2数据库中取值

    可能大家在工作中,经常会有这样一个需求,利用Shell从数据库中取出值,比如说日期,作为一个变量,进行后续处理。

     下面我就利用Shell从Oracle和DB2中取值作为一个demo:

     DB2:

     db2 "connect to GDB_CRM" > /dev/null 2>&1
     PAR_DATE=`db2 -x "select distinct substr(Trim(GROUP_CYCLE),1,8) from WF_CUST_CYCLE where APP_CODE='ECRM' and GROUP_CODE='ECRM'"`
    db2 quit > /dev/null 2>&1

     解释一下上面的代码,上面的代码,连接到GDB_CRM这个数据库,然后查询了一个表,取出当前作业日期,作为变量,存放在PAR_DATE这个变量中。db2 -x的意思就是去除表头,也是不打印那个列名,这样才能将值直接赋给变量。

    Oracle:

      dt=`sqlplus -s epemdata/epemdata@odsbptdb << !
      set colsep' ' echo off feedback off heading off pagesize 0 linesize 80 numwidth 12 termout off timing off trimout on trimspool on;
      select to_date('20080101','yyyymmdd') from dual;
     exit;
     !`
     echo $dt

    解释一下上面的代码,sqlplus是连接Oracle数据库的命令,后面接用户名/密码@SID,主要是后面的一条Set命令,大意和db2 -x的含义差不多,具体的,可以去查阅相关资料。要实现的功能就是只返回一个值,而且不打印表头,不返回其它信息,还设置了列长度等等。这些都是为了能够将日期直接赋给dt这个shell变量而设置的。

     如有不明白,请和我联系,QQ:94424751。以上如果有错误之处,希望多拍砖,本人菜鸟!!!

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710 Code detection by Codefense

Copyright 2005-2007 Bootad.cn. Some Rights Reserved
.粤ICP备07062332号 QQ:94424751