我想依次執行unix目錄中的所有.sqls。UNIX順序執行文件
假設目錄名稱/導出/家/我 當我列出使用LS 在目錄中的文件也顯示
a.sql
b.sql
c.sql
現在,我需要寫一個shell腳本,它會去目錄遍歷目錄中的所有.sqls並依次執行它們。請建議
我想依次執行unix目錄中的所有.sqls。UNIX順序執行文件
假設目錄名稱/導出/家/我 當我列出使用LS 在目錄中的文件也顯示
a.sql
b.sql
c.sql
現在,我需要寫一個shell腳本,它會去目錄遍歷目錄中的所有.sqls並依次執行它們。請建議
如果順序,你的意思是按字母順序排序,然後做到這一點,
#!/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文件中擁有數據庫對象/數據的所有創建/插入語句。
謝謝....但是你說什麼是至關重要的。因此,假設我創建單獨的文件夾在目錄爲假設爲ddls和dmls etcs .how我然後順序執行所有.sqls在每個文件夾中順序。請建議並再次感謝您的以前的建議 – user2717470
假設順序並不重要:
#!/bin/sh
for file in folder/*.sql
do
cat $file #or whatever you want to do with your sql file
done
按順序是什麼意思?執行順序是否重要?你如何確定這個訂單? –
我將在目錄中創建單獨的文件夾,以便在directiry/export/home/me中執行.sqls.suppose。我創建三個子目錄ddl dml validation.Now每個這些子文件夾都將包含n個數字.sqls.hence,我需要循環通過提到的目錄中的所有子目錄,然後執行所有.sqls.Please建議 – user2717470