如何從文字檔案讀入 SQL 引數

xiaohuihui發表於2020-06-12

有時我們希望把引數列表分行儲存在文字檔案裡,執行SQL時再拼到in函式里,從而查詢出符合條件的記錄。

但SQL不能解析文字檔案,直接拼到in函式里有困難,所以很多人先把檔案匯入資料庫臨時表,再用join語句做關聯,從而間接實現in函式的功能。但這樣一來每當檔案變化的時候,都要手工做一遍刪表導庫的動作,過程還是挺麻煩的。

一勞永逸的做法是用Python、C#等程式語言開發程式,但這類語言技術門檻很高,想學會有點兒難,雖然理論上啥功能都能實現。

如果用esProc,實現這個演算法就簡單多了,只需短短几行程式碼:


A B
1 =file("params.txt").import@i() /開啟文字檔案,按行取引數列表
2 =orcl.query("select * from T where P in(?)",A2) /執行SQL,A2是in函式的引數值

引數列表過長的時候就不能用上面的方法了,因為in函式對成員數量有限制,比如Oracle規定不能超過1000個。遇到這種情況也別擔心,esProc支援庫外通用查詢,且支援長引數列表,程式碼只需這樣寫:


A B
1 =file("params.txt").import@i().sort(~) /讀取長引數列表並排序
2 =orcl.cursor("select * from T") /從庫表取出資料
3 =A3.select(A1.contain@b(P)) /查詢符合引數列表的記錄

 esProc是個指令碼語言,可以在桌面IDE裡執行並除錯,可以連線任意資料庫並執行SQL。對於SQL難以實現的功能,esProc通常都有辦法簡化。


這裡有最佳化 SQL 的彙總

這裡是常用的 esProc 演算法

esProc 提供了敏捷的語法體系和豐富的結構化類庫,可通用地解決 SQL 難題,詳情參考

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2697964/,如需轉載,請註明出處,否則將追究法律責任。

相關文章