Shell腳本連接oracle數據庫的實現代碼 linux shell 程式碼

最近研究瞭一下怎樣使用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 到最後一行的文本
刪除最後一行文本

到此這篇關於Shell腳本連接oracle數據庫的實現代碼的文章就介紹到這瞭,更多相關Shell連接oracle內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支援!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *