2013-08-26 116 views
0

我想依次執行unix目錄中的所有.sqls。UNIX順序執行文件

假設目錄名稱/導出/家/我 當我列出使用LS 在目錄中的文件也顯示

a.sql 
b.sql 
c.sql 

現在,我需要寫一個shell腳本,它會去目錄遍歷目錄中的所有.sqls並依次執行它們。請建議

+3

按順序是什麼意思?執行順序是否重要?你如何確定這個訂單? –

+0

我將在目錄中創建單獨的文件夾,以便在directiry/export/home/me中執行.sqls.suppose。我創建三個子目錄ddl dml validation.Now每個這些子文件夾都將包含n個數字.sqls.hence,我需要循環通過提到的目錄中的所有子目錄,然後執行所有.sqls.Please建議 – user2717470

回答

2

如果順序,你的意思是按字母順序排序,然後做到這一點,

#!/bin/sh 

for i in `ls folder/*.sql | sort ` # I think the shell lists file sorted alphabetically by default 
do 
    mysql -u user_name -ppassword database_name < i 
done 

但是,當你正在執行的SQL文件列表過於頻繁,那麼你需要考慮的順序,例如,如果你的設計,Employees和Departments,那麼即使在執行創建Departments表的第三個sql文件之前,如果第一個sql文件創建Employees表並且第二個sql文件創建了FOREIGN KEY到Departments表,那麼您將遇到麻煩。

最好是按照正確的順序在一個SQL文件中擁有數據庫對象/數據的所有創建/插入語句。

+0

謝謝....但是你說什麼是至關重要的。因此,假設我創建單獨的文件夾在目錄爲假設爲ddls和dmls etcs .how我然後順序執行所有.sqls在每個文件夾中順序。請建議並再次感謝您的以前的建議 – user2717470

0

假設順序並不重要:

#!/bin/sh 

for file in folder/*.sql 
do 
    cat $file #or whatever you want to do with your sql file 
done