当前位置 博文首页 > Shell脚本连接oracle数据库的实现代码

    Shell脚本连接oracle数据库的实现代码

    作者:assless 时间:2021-02-03 15:14

    最近研究了一下怎样使用shell 脚本连接数据库,然后执行查询语句。这样对于需要定时执行的脚本,我们可以建个 crontab 去定时执行。

    先介绍一下客户端的安装:

    linux 环境需要用 sqlplus 客户端去连接oracle 数据库,首先我们需要确认有没有安装:which sqlplus如果没有安装就需要先安装一下,安装步骤如下:

    到oracle 官网下载,之后安装以下两个模块:

    rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm 
    rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

    配置环境变量:
    vim /etc/profile

    保存之后,执行: source /etc/profile

    whereis oracle #查看oracle 客户端安装路径

     

    进入客户端目录

     

    添加配置文件:touch tnsnames.ora
    编辑配置文件:vim tnsnames.ora

    DATABASENAME =
     (DESCRIPTION =
     (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
     )
     (CONNECT_DATA =
      (SERVICE_NAME = servicename)
     )
     )

    编辑保存完成以后,可以用命令行测试是否连接成功

    sqlplus username/password@DATABASENAME

    如果正常的话,就可以顺利的连上oracle 数据库了。
    那我们就开始写自己的shell 脚本:

    #! /bin/bash
    sqlplus username/password@DATABASENAME >tmp.txt << EOF
    set heading off
    set line 4000
    set WRAP OFF
    Select user_id,mobile From txlx_xxx_user_info Where rownum <20;
    exit
    EOF
    sed -i 1,12d tmp.txt
    sed -i -e '/selected/,$d' tmp.txt
    sed -i -e '/Disconnected/,$d' tmp.txt
    sed -i '$d' tmp.txt

    逐行解释一下:

    #!/bin/bash #shell 脚本开头,指定使用哪种shell
    连接数据库语句,标准输出到 tmp.txt,从<<EOF 之间获取输入
    去掉表头
    设置行宽度
    关闭自动换行
    查询语句
    退出
    EOF 输入结束
    sed 删除tmp.txt 1~12 行连接数据库产生的文本
    删除 selected 到最后一行的文本
    删除 Disconnected 到最后一行的文本
    删除最后一行文本

    js
    下一篇:没有了