2012-11-15 28 views
0

我想在KornShell(ksh)協同進程中並行運行一堆腳本。其中一些腳本包含許多DDL語句。這些DDL語句被識別爲獨立的,並針對不同的(和大型/昂貴的,例如:3500萬行及以上)數據庫對象。爲了同時運行它們,我正在考慮爲每個DDL語句創建單獨的子腳本 - 這樣我可以說:SQL * Plus - 這將會是很多:( - 導致讀取和寫入過多 - 因爲它是一個批處理過程,所需的時間並不是太關鍵,但(可能仍然會導致在這個單一的磁盤並行執行環境中發生顛簸)。KornShell SQL腳本解析器 - 從ksh並行執行

我仍然不喜歡物理腳本擴散的想法..如果if有一種方法可以從ksh調用解析器,這樣我就可以從一個相當大的腳本文件中提取出每個DDL/DML或任何其他語句,並在後臺進程中以編程方式執行它們。任何想法?

+0

是的,這是可能的。用'while read line'查找ksh例子;做....;完成 shellter

+0

在這裏搜索'[ksh]或[bash] background'。關於[bash]的問題比[ksh]要多,但是bash和ksh的相似度是95%,大部分關於bash背景處理的內容都適用於ksh。 (哦,順便說一句,如果你在AIX或solaris上使用ksh,默認情況下你將使用ksh88,四處尋找可以安裝'new'ksh的地方)。再次祝你好運。 – shellter

+0

感謝評論Shellter - 我的問題更多的是關於'解析'而不是關於Korn /控制結構本身。不管怎麼說,還是要謝謝你。 –

回答

0

這個工作:

cat DDL_statements | parallel -j20 --pipe -N 10 sql oracle://scott:[email protected] 

這假設DDL_statements是1行(如果它們不是1行,舉幾個例子)。它並行運行20個作業,並以10個語句塊開始。

它使用GNU Parallel(和GNU sql - GNU Parallel的一部分)。