用sh列表顯示oracle資料庫單條查詢結果(轉)
用sh列表顯示oracle資料庫單條查詢結果(轉)[@more@]經常在UNIX下使用oracle資料庫,用的是sqlplus,大體已經習慣了.但是有一點受不了,就是用select查詢一個大表(欄位比較多的表) 時,雖然查的結果只有一行,但要是set head on,往往要顯示幾屏,每一屏都要顯示一遍所有欄位,根本看不清整個表的內容,如果 set head off,又不知道每個值對應的是哪個欄位,一個一個數太麻煩了.總想,要是這條資料縱向列表顯示,左邊列名,右邊是值,看著該多方便啊,於是花了點寫了一個shell程式,程式名就叫select.#!/bin/shconnectstr='username/password@connectstr'table=`echo $*|sed 's/.*from *([^ ]*) *.*/1/'|tr "[a-z]" "[A-Z]"`where=`echo $*|sed 's/.*from/from/'`cat > sel$$.sql << ENDset head offset feed offset headsep offset newp noneset linesize 255set sqlblanklines OFFset trimspool ONset termout offspool on$$.sqlselect 'select '''||column_name||'|'',ltrim(rtrim('||column_name||')) $where;' from user_tab_columns where table_name='$table';spool offset termout onselect '##SQL BEGIN##' from dual;select 'ColumnName| Value' from dual;select '-----------| ------------' from dual;@@on$$.sqlselect '##SQL END##' from dual;exitENDsqlplus $connectstr @sel$$.sql|sed -n '/##SQL BEGIN##/,/##SQL END/{/^$/d/##SQL/dp}'|awk -F'|' '{printf "%-30s%-s
",$1,$2}'rm -f on$$.sql sel$$.sql哈哈,使用的時候跟在sqlplus狀態下一樣的語句,瞧,這是我在sh狀態下查詢一個有26個欄位的表,要是在sqlplus狀態下用 set head on狀態,得顯示個幾十屏的內容.當我在UNIX sh狀態下用這個sql語句時,旁邊的同事都呆住了,沒搞清怎麼回事.(為隱密起見,欄位名用了X和亂符表示)$ select * from testtable;ColumnName Value----------- ------------XXXX_ID 2XXXXON_ID 3XXXXXXXX_SUBS 2XXXXTE_TIME 20020320173232XXXXTOR 0XXXXTOR_GROUP 0XXXXNAME XXXXXXXX_BIRTHDAY_TIME XXXXXXXX_MODIFY_TIME 20020320173232XXXXXXXX_OLDNO XXXXFIER 0XXXXFIER_NAME AdminXXXXFIER_LOGIN superXXXXOPERTYPE 0XXXXXXXX_CHARGE_NO XXXXXXXX_BANK XXXXXXXX_BANK_NO XXXXXXXX_NET_USE 0XXXXXXXX_ATTRIBUTE 1XXXXUP1 0XXXXUP2 NetXXXXXXXX_BUSINESS 99XXXXXXXX_SEX 0XXXXXXXX_CREDIT_THRESHOLD 0XXXXXXXX_CREDIT_FLOOR 0XXXXXXXX_ID 11XXXXXXXX_NAME USERXXXXXXXX_PASSWORD xxxc6xxx2ab461b4XXXXXXXX_IDENTITY XXXXXXXX_IDTYPE 0XXXXXXXX_VOCATION XXXXXXXX_CITY XXXXXXXX_PROVINCE 13900000005XXXXXXXX_COUNTRY XXXXXXXX_ZIP_CODE XXXXXXXX_PHONE 01062501658XXXXXXXX_FAX XXXXXXXX_EMAIL user@263.netXXXXXXXX_STATUS 0XXXXXXXX_STATUS_TIME 20020320173231XXXXXXXX_STATUS_COMMENT XXXXXXXX_XXXOUNT_CXXLE 14XXXXXXXX_PAY_TYPE 1XXXXXXXX_NO AN20000013XXXXXXXX_ACCOUNT_NO 11XXXXXXXX_XXXXING_CYCLE XXXXXXXX_XXXXING_AMOUNT XXXXXXXX_XXXXING_EAMOUNT XXXXXXXX_PAY_TIME XXXXXXXX_OWE_XXXXE 0XXXXXXXX_PRE_XXXXK_DATE XXXXENCY_TYPE 0XXXXXXXX_PARENT 0XXXXXXXX_BANKNAME XXXXXXXX_BANKNUM XXXXXXXX_LINKMAN 99098808XXXXICE_DELIVER_METHOD 1XXXXXXXX_TYPE 0XXXXXXXX_NUMBER CDT_XXXX_HOLDER CDT_XXXX_EXPIRY 20020320000000XXXXXNT_TYPE 0XXXXXXXX_GRADE 5XXXXRTISE_FLAG 0XXXXODE_ID 0XXXXS_ID 0XXXXLLER_ID 0XXXX_NAME AdminXXXX_LOGIN_NAME superACYSEW_DATE 2004121400000
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944856/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何分頁顯示資料庫查詢結果?資料庫
- Oracle資料庫PL/SQL Developer查詢結果顯示問號亂碼的解決方法Oracle資料庫SQLDeveloper
- Laravel 關聯查詢限制條數和分組查詢顯示為零的結果Laravel
- ES查詢之查詢屬性過濾、結果高亮顯示
- MySQL pager和nopager命令--不顯示查詢結果MySql
- MySQL 查詢結果以百分比顯示簡單實現MySql
- C# dataGridView展示資料庫查詢結果C#View資料庫
- Oracle將結果豎向顯示Oracle
- JAVA資料庫處理(連線,資料查詢,結果集返回)Java資料庫
- 查詢前10條資料oracleOracle
- oracle 資料庫,能不能將查詢的結果建立成新表。Oracle資料庫
- mysql根據查詢結果批量更新多條資料(插入或更新)MySql
- 利用MySQL的一個特性實現MySQL查詢結果的分頁顯示(轉)MySql
- 從一條select語句看Oracle資料庫查詢工作原理 - 轉Oracle資料庫
- 【YashanDB資料庫】yasboot查詢資料庫狀態時顯示資料庫狀態為off資料庫boot
- MongoDB之資料查詢(分頁顯示)MongoDB
- oracle date資料的條件查詢Oracle
- 資料庫基礎查詢--單表查詢資料庫
- UPDATE查詢結果範圍內的資料
- 利用資料泵匯出查詢結果(二)
- 利用資料泵匯出查詢結果(一)
- oracle查詢結果外面新增引號Oracle
- Oracle查詢結果 儲存為XMLOracleXML
- oracle 查詢結果的各種格式Oracle
- 小技巧:顯示資料庫查詢耗時,改善開發者習慣資料庫
- 等於NULL的查詢條件導致查詢結果不正確Null
- VS2015 查詢結果明細沒顯示問題
- 資料結構-單連結串列查詢按序號查詢資料結構
- oracle利用中游標取資料庫的結果集應用例項(轉)Oracle資料庫
- java反射機制解決資料庫查詢結果到Model類Java反射資料庫
- 資料庫中單表查詢資料庫
- Oracle查詢前100萬條資料Oracle
- 提高ORACLE資料庫的查詢統計速度(轉)Oracle資料庫
- laravel with 查詢列表限制條數Laravel
- 【記錄】sqlserver列轉行查詢 並將查詢結果用逗號分隔開SQLServer
- HANA Studio中修改預設查詢結果只顯示1000行
- Oracle中實現查詢結果按照in中條件排序 InStr函式Oracle排序函式
- Java資料庫分表與多執行緒查詢結果彙總Java資料庫執行緒