歡迎您光臨本站 註冊首頁

Shell腳本連接oracle數據庫的實現代碼

←手機掃碼閱讀     niceskyabc @ 2020-05-13 , reply:0

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


[niceskyabc ] Shell腳本連接oracle數據庫的實現代碼已經有361次圍觀

http://coctec.com/docs/linux/show-post-234278.html