𝓢𝓸𝓹𝓹
同樣是關於 這個那個 的事情,現在仔細想想,這算是很陽春的資料庫操作吧,稍微來講講本科系的資料結構及應用吧
DataStructure Database
𝓢𝓸𝓹𝓹
在一般的認知中,先進先出的叫做 Queue (佇列),後進先出的叫做 Stack (堆疊),兩者是迥異的資料處理邏輯與結構,且需要特別的程式語言或資料庫支援才能使用
𝓢𝓸𝓹𝓹
但是對於本科系的人來說,不管是 Queue 還是 Stack 都可以用 Array (陣列) 來寫作出來,Queue 和 Stack 可以互相轉換的,可用 Queue 寫 Stack,反過來也可用 Stack 寫 Queue,這兩者的資料通常是用 Array 來寫作,然而 Array 可以用很多東西來代替,像是 Table (資料庫資料表) 或是 File (純文字檔案),甚至是 File System (檔案系統內的檔案列表)
𝓢𝓸𝓹𝓹
然後就可以做出進階的功能,像是 Priority Queue (優先權佇列) 之類的....
𝓢𝓸𝓹𝓹
在工作上,常常需要從數千個資料檔內,總計上億筆 Log 撈取數百萬筆資料出來進行數據分析,全部丟到資料庫處理是不現實的,花兩三小時寫寫 Script 可以做完的事情,遠快於花好幾天把資料匯入資料庫...
𝓢𝓸𝓹𝓹
--
𝓢𝓸𝓹𝓹
在之前的程式碼中,我拿 grep ZZZ XXX 代替 select * from XXX where YYY like ZZZ
𝓢𝓸𝓹𝓹
拿 awk '{print $1,$2}' 代替 select $1,$2 from XXX
𝓢𝓸𝓹𝓹
拿 sort -k1 代替 select * from XXX order by YYY
𝓢𝓸𝓹𝓹
拿 sort | uniq 來代替 select distinct * from XXX
𝓢𝓸𝓹𝓹
拿 sort | uniq -c | grep -ivE '^ *1 ' 來代替 select count(YYY) from XXX where count(YYY) >= 1
𝓢𝓸𝓹𝓹
拿 cat XXXX | xargs -I pattern sh -c "yyyyyyyy" 來代替 for .... next 或 while ... until
𝓢𝓸𝓹𝓹
拿 cat XXXX | xargs -n 20000 | sed -r 's/ /\|/g' | xargs -I pattern sh -c "grep -iE 'pattern' YYYY" 來代替 select from YYYY where ZZZ in (select from XXXX)
𝓢𝓸𝓹𝓹
拿 cp XXXX YYYY > ZZZZ 代替 select from XXXX union select from YYYY
𝓢𝓸𝓹𝓹
最後再拿 awk '{printf("%-40s %s",$1,$2)}' 來做排版輸出
𝓢𝓸𝓹𝓹
--
𝓢𝓸𝓹𝓹
總之,用 linux 基本指令對檔案進行操作,一樣可以做到像資料庫引擎一般的資料篩選與匯出的,只要有謹慎評估指令的執行效率,整體效率也不會太差
𝓢𝓸𝓹𝓹
𝓢𝓸𝓹𝓹
--
𝓢𝓸𝓹𝓹
前面提到 queue 和 stack 的部分,主要是要說明「各種資料結構、函數、程式碼都是可以互相轉換的」,別限制了自己的想像力和創造力
𝓢𝓸𝓹𝓹
所謂的資料庫資料表,充其量就只是個格式化過的純文字檔........
𝓢𝓸𝓹𝓹
只是資料庫引擎可以幫他做索引、搜尋、篩選、儲存最佳化.....等等而已,不使用資料庫引擎的時候,這些就是自己處理而已
𝓢𝓸𝓹𝓹
--
𝓢𝓸𝓹𝓹
補充
select a,replace(b,c,d) from XXX union select a,replace(e,f,g) from YYY 可以代替 join
權限只有兩串蕉@鼠泥
就是換一個語法寫同目樣的功能處理出來
用作業系統的語法一樣能達到目標
(嗯,輕腳本?)

想像力不夠還真的搭不起來
(其實是linux沒玩過,只知道命令基本用法
就算是Dos要去做簡單的資料過濾就是個小麻煩
功力還不到位

頂多就 find /c xxx 尋找字串 囧
𝓢𝓸𝓹𝓹
用 find 代替 grep
𝓢𝓸𝓹𝓹
用 %abcde%=%1323% 代替 sed -r 's///g' 或 replace()
𝓢𝓸𝓹𝓹
我以前負責 windows 系統的時候,是寫符合 win95/xp 的 dos 指令做這種事情,現在負責 linux 的系統,還是幹一樣的事
權限只有兩串蕉@鼠泥
起碼東西撈的出來
𝓢𝓸𝓹𝓹
把這篇截圖給同事A,他竟然說要follow我的河道.... 總覺得各種意義上都很微妙
權限只有兩串蕉@鼠泥
也許能撿到些好康
𝓢𝓸𝓹𝓹
底子不足,拿了也沒用啊
𝓢𝓸𝓹𝓹
我寫的東西偏向整體規劃、原理說明、應用方式,而不是通用型script啊
載入新的回覆