shell指令碼中利用spool命令匯出資料

2021-10-06 16:24:03 字數 1166 閱讀 1362

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...