设为首页 收藏本站
查看: 1263|回复: 0

[经验分享] linux下的sqlplus命令

[复制链接]

尚未签到

发表于 2018-5-19 07:03:07 | 显示全部楼层 |阅读模式
    在shell脚本中通过调用sqlplus来执行SQL及一些数据库命令。下面来介绍一下常用的参数选项(现学现卖 DSC0000.gif
    1)-S
    sqlplus -S/nolog
    该参数选项登录时没有提示信息输出
  

    2)EOF
    EOF通常与<<一起使用,表示把后面的输入作为子命令或是shell的输入,直到再次遇到EOF结束该输入。下面,我们来看一个简单的数据库的启动和关闭脚本:
    [.....]cat startup.sh

    #!/bin/bash
    #“>”表示把当前输入的结果使用文件*.log存储起来
    sqlplus -S/nolog>startlog.log<<EOF
    connect sys/sys as sysdba
    startup;
    exit
    EOF
    exit;
    [.....]cat shutdown.sh
    #!?bin/bash
    sqlplus -S/nolog>shutlog.log<<EOF
    conn sys/sys as sysdba
    shutdown immediate;
    quit
    EOF
    exit;
    当我们不使用文件来记录日志时,它会直接输出到屏幕上。
  

    3)下面,我们来看一个sqlplus与shell交互的例子:
    [.....]$ cat test02.sh
    #!/bin/ksh
    read -p "Please input emplyees id>" emp_id
    name=`sqlplus -S /nolog <<EOF
    set heading off
    set feedback off
    conn hr/hr
    select first_name || ' ' || last_name emp_name
    from employees where employee_id = '$emp_id';
    exit
    EOF`
    if [ "$name" == "" ]; then
          echo "No data found";
    else
          echo "$name"
    fi
    exit;
    [.....]$ sh test02.sh
    Please input emplyees id>100
    Steven King
    [.....]$ sh test02.sh
    Please input emplyees id>1
    No data found
    [.....]$
    该程序的思想是,用户输入一个employee_id并显示该ID对应的员工姓名。注意上述的一个符号,该符号不是引号,是数字键1旁边的那个符号。
  

    4)Sqlplus返回值给Shell
    [oracle@localhost oracle_script]$ cattest3.sh
  #!/bin/bash
  source ~/.bash_profile

  qlplus -S /nolog > result.log<<EOF
  set heading off
  feedback off
  pagesize 0
  verify off
  echo off
  numwidth 4
  conn scott/tiger
  col coun new_value v_coun
  select count(*) coun from emp;
  select * from emp where empno=7369;
  exit v_coun
  EOF
  VALUE="$?"
  echo "The number of rows is$VALUE."
  该sqlplus使用 col  列名 new_value 变量名 定义了变量并带参数exit, 将变量v_coun返回赋给了shell的$?

备注:NEW_VALUE通常的使用方法为:
column column_name new_value var_name
       new_value是将所获得的列值赋予到变量名,然后该变量名可以参与后续处理



  5)sqlplus文件操作命令
  1.spool将屏幕显示及查询结果输入到指定文本文件中
     spool d:\1.txt
  select * from emp;
  spool off
  2.执行和编辑指定位置的SQL脚本
    start d:\test.sql
    @ d:\test.sql
    执行当前目录下的SQL脚本,即:登陆SQLPLUS时的目录,示例如下:
    [oracle@bys001 oradiag_oracle]$ ls
    a.sql  diag
    [oracle@bys001 oradiag_oracle]$ cat a.sql
    select sysdate from dual;
    [oracle@bys001 oradiag_oracle]$ sqlplus bys/bys
    BYS@bys1>@a.sql
    SYSDATE
     --------
    05-SEP-13



   编辑指定的SQL脚本
   edit d:\test.sql
    3.&替代变量  如:
      select * from emp where empno=&;
      会提示输入EMPNO的值。交互式
4.将当前SQL缓冲构内SQL语句保存到指定文件
      save d:\test2.sql
        将文件中SQL语句调入SQLPLUS缓冲区
        get d:\test2.sql
        显示缓冲区内语句
        list
        注意:单引号和双引号内大小写敏感。
         关键字不能缩写,也不能跨行书写,单引号内也不跨行写。
        每个子句是一行。
        字符串用单引,列别名用双引。
        标点符号要用英文标点,中文出错。
  

  6)SQLPLUS中显示设置-列长、分页
  1.更改分页、行宽设置
       show linesize
       show pagesize
       set linesize 100       ——默认80字符
       set pagesize 20      ——默认14行
       SQL> set numwidth     38好像设置数字型的默认显示宽度 set num 4 ,所以显示会有变 ##
       2.设置指定显示的列名的宽度--列是字符及数字

         col username format a20     设置 username列的列宽是20个字符-----字符列宽

         col username for a4

         BYS@bys1>col aa format 99,999,999      设置abc列的列宽是8位,并用逗号隔开---数字列宽



  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461838-1-1.html 上篇帖子: Linux TUN/TAP 下篇帖子: Linux 系统时区更改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表