Shell 指令碼 串連 oracle 資料庫

來源:互聯網
上載者:User
Shell 指令碼 串連 oracle 資料庫

最近研究了一下怎樣使用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/bashsqlplus username/password@DATABASENAME >tmp.txt << EOFset heading offset line 4000set WRAP OFFSelect  user_id,mobile From txlx_xxx_user_info Where rownum <20;exitEOFsed -i 1,12d tmp.txtsed -i -e '/selected/,$d' tmp.txtsed -i -e '/Disconnected/,$d' tmp.txtsed -i '$d' tmp.txt

逐行解釋一下:

#!/bin/bash #shell 指令碼開頭,指定使用哪種shell串連資料庫語句,標準輸出到 tmp.txt,從<<EOF 之間擷取輸入去掉表頭設定行寬度關閉自動換行查詢語句退出EOF 輸入結束sed 刪除tmp.txt 1~12 行串連資料庫產生的文本刪除 selected 到最後一行的文本刪除 Disconnected 到最後一行的文本刪除最後一行文本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.