sed+awk模擬簡單sql查詢
經常需要用sqlplus去查詢一些資料字典型別的資料,這些資料量不大,而且需要環境之間都是一樣的,所以就想使用離線查詢的方式,把那些資料以平面檔案的形式存放,然後透過系統級的操作來輸出。以下使用 sed 和awk來實現。還有很多很多需要改進的地方,就當做是拋磚引用了
1.資料量極小的行級篩選
.....
echo 'MODU CC_VERSION MODULE_VERSION PROJ_NAME
---- -------------------- -------------------- ------------------------------'
data_path=`pwd`/data
data_file=${data_path}/ccmodule.data --資料透過sqlplus spool 到這個檔案中
sed -n "/$1/p" $data_file|uniq
輸出結果如下:
MODU CC_VERSION MODULE_VERSION DEV_PATH
---- -------------------- -------------------- ------------------------------
MO1 550 550 devpath1
MO2 550 550 devpath2
MO3 550 550 devpath3
MO4 550 550 devpath4
--因為這個資料量極小,而且資料行內的資料分佈很有規律,所以我用了sed做了行級操作
2.多重查詢條件
類似資料庫查詢中的 and or條件
......
cc_module=`echo $2|tr [[:lower:]] [[:upper:]]`
data_path=`pwd`/data
data_file=${data_path}/ccobj.data --資料透過sqlplus spool 到這個檔案中
echo 'MODU OBJECT OBJECT_NAME DB_AREA_CODE VERSION
---- ------ ------------------------------ --------------- --------------------'
cat $data_file |awk '
BEGIN{
cc_version="'$1'"
cc_module="'$cc_module'"
cc_index=1
}
{
if ($1== cc_module && $5 == cc_version) --組合查詢條件,and/or。。。
{
print cc_index,$0
cc_index=cc_index+1
}
}'
--查詢結果如下
MODU OBJECT OBJECT_NAME DB_AREA_CODE VERSION
---- ------ ------------------------------ --------------- --------------------
1 MO1 app MO1_TAB1 DB_AREA1 550
2 MO1 app MO1_TAB2 DB_AREA2 550
3.動態模糊匹配
類似資料中的Like 匹配
.......
obj_name=`echo $2|tr [[:lower:]] [[:upper:]]`
data_path=`pwd`/data
data_file=${data_path}/ccobj.data
echo 'MODU OBJECT OBJECT_NAME DB_AREA_CODE VERSION
---- ------ ------------------------------ --------------- --------------------'
cat $data_file |awk '
BEGIN{
cc_version="'$1'"
obj_name="'$obj_name'"
cc_index=1
}
{
if ($3~obj_name && $5 == cc_version) --動態模糊匹配
{
print cc_index,$0
cc_index=cc_index+1
}
}'
輸出結果如下:
MODU OBJECT OBJECT_NAME DB_AREA_CODE VERSION
---- ------ ------------------------------ --------------- --------------------
1 MO1 DUMMY MO1_TAB1 DUMMY 550
2 MO2 DUMMY MO1_TAB2 DUMMY 550
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127761/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ATM-簡單SQL查詢SQL
- SQL Server-簡單查詢語句SQLServer
- oracle實用sql(13)--併發簡單模擬OracleSQL
- 案例:模擬京東快遞單號的查詢效果
- 簡單查詢、插入、更新、刪除SQL語句SQL
- 簡單記錄幾個有用的sql查詢SQL
- SQL Story摘錄(一)————簡單查詢初探 (轉)SQL
- MySQL - 資料查詢 - 簡單查詢MySql
- Mybatis簡單查詢MyBatis
- 簡單的查詢
- 對比SQL中簡單巢狀查詢與非巢狀查詢CFSQL巢狀
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- SQL Server-簡單查詢語句,疑惑篇(三)SQLServer
- 簡單的mysql查詢MySql
- 關聯查詢子查詢效率簡單比照
- 訂單綜合查詢之sqlSQL
- #查詢演算法#【1】簡單查詢:順序、折半查詢演算法
- 模擬簡單的動態代理
- 簡單模擬javaScript物件導向JavaScript物件
- YonBuilder低程式碼實戰:YonQL資料查詢小Case,讓SQL查詢變簡單UISQL
- 簡單的查詢語法
- ElasticSearch中的簡單查詢Elasticsearch
- 巧用rowid簡化sql查詢SQL
- 一句簡單的SQL查詢語句的背後...SQL
- Oracle 查詢重複記錄,以及簡單的sql應用。OracleSQL
- 簡單易用的前端模擬資料前端
- mysql查詢快取簡單使用MySql快取
- MySQL的簡單查詢語句MySql
- 插值查詢的簡單理解
- 一個簡單的樹查詢
- 嘗試讓查詢更簡單
- SQL單表查詢語句總結SQL
- SQL面試題 三(單表、多表查詢)SQL面試題
- SQL Server簡潔查詢正在執行SQL(等待事件)SQLServer事件
- 簡單實現.NET Hook與事件模擬Hook事件
- SearchView的簡單使用和模擬搜尋View
- 模擬data block lost write的簡單方法BloC
- 簡單機器語言的模擬 (轉)