shell指令碼中利用spool命令,將資料匯出到檔案中
廢話不多說直接上**:
sqlplus -s $
<<-
! >/dev/null
set heading off;
set feedback off;
set pagesize 0;
setecho off;
set verify off;
set termout off;
set linesize 3000;
set trimspool on;
spool $2;$1
; spool off;
!
以上**可以直接作為乙個固定的資料卸出指令碼來使用,在需要將sql查詢的結果匯出到檔案中時直接呼叫該指令碼即可。
設定說明:
set heading off:輸出內容的列標題不列印
set feedback off:顯示本次sql命令處理的記錄條數,off等價為0
set pagesize 0:輸出每頁行數,預設為24,為了避免分頁,設定為0
set echo off:關閉sqlplus中執行的命令本身
set verify off:設定sql中若有變數,不列印結果變化前後的語句內容
set termout off:顯示指令碼中的命令的執行結果
set linesize 3000:設定一行的字元總長度
set trimspool on:去掉spool命令輸出時每行末尾空格
$1為查詢sql
$2為具體資料輸出的文字名
$為資料庫連線的使用者名稱密碼,此處設定為從環境變數中獲取,也可以改為引數傳遞,或者直接寫死都可
以上指令碼名假設為 spoolfile.sh 則匯出資料呼叫方式如下
spoolfile.sh "select 欄位1||『|+|』||欄位3||『|+|』||欄位5||『|+|』 from tablename" $
/filename.dat
說明:
以|+|來分割每個字段(可以自定義為其他任意符號)
生成的檔案字尾為dat(也可以是txt,甚至是不要字尾等)
sql語句可以是任意內容(多表聯查,子查詢等等,只要是可以執行的sql都可以)
以上即可將資料匯出至檔案中!
利用shell指令碼得到mac位址
在linux下,利用shell程式設計,可以很方便的處理文字或得到系統資訊,這裡就利用shell程式設計拿到mac位址,ipv4位址,ipv6位址。ifconfig awk eth0 tr 50 e5 49 32 9d a0 sbin ifconfig sed ne eth0 s hwaddr 1 ...
linux中利用shell指令碼條件執行命令
在linux環境中,我們總會有一些命令需要經常用,例如經常跳轉到某些目錄下或者執行某些命令,輸入一連串的命令是很煩的,此時我們可以預先寫一些指令碼然後根據我們的選擇自動執行命令,那豈不是完美,本指令碼就是為此而生的 以跳轉不同的目錄舉例,當然也可以執行其他命令,這時候只需要模擬寫shell命令即可 ...
利用 tee 命令除錯shell指令碼中的管道
在編寫shell指令碼時,除錯是個比較麻煩的事,特別是涉及到多層管道命令的時候,會產生多個中間結果,tee命令的作用是從標準輸入中讀取資料寫入標準輸出或檔案中,利用它可以從管道中讀取中間結果並寫入本地臨時檔案中,通過中間結果可以一步一步的定位到指令碼的錯誤 下面是乙個簡單的指令碼,指令碼中 proc...