最近由於項目須要,打算寫一個批處理程序,更新數據庫中的表數據。寫了3個sql文件:a.sql,b.sql,c.sql,在這三個文件中,實現了建立表,並向表中插入數據的操做。
目前我經過SQLPLUS能夠執行一個SQL文件,例如:
sqlplus test/test@test @a.sqlsql
如何在一個批處理文件中,按順序執行三個sql文件。
我新建了一個a.bat文件,在文件中填寫
sqlplus test/test@test @a.sql
@b.sql
@c.sql
執行文件a.bat,只是執行文件a.sql,執行完文件a.sql,不繼續執行後邊的文件,如何才能順序執行批處理中的多個sql文件中的語句呢。數據庫
因而到網上找找,我能遇到的問題,別人應該也有遇到的,因此就查到了以下:oracle
首先把全部的sql文件準備好,具體每一個文件裏面的內容這裏就不列出來了。測試
再準備一個所有執行的sql文件,我暫時叫它All.sql,內容以下:spa
--@Y:\表\a.sql --@Y:\表\b.sql --@Y:\表\c.sql @Y:\表\receive28.sql @Y:\表\receivetcs.sql @Y:\表\receiveattachment.sql @Y:\表\ContainerLists.sql @Y:\表\DocumentAttachedInformationList.sql @Y:\表\edocrealation.sql @Y:\表\EntryContainerInformationList.sql @Y:\表\EntryIdentityInformationList.sql @Y:\表\EportLocationInformationList.sql @Y:\表\GoodsInformationList.sql @Y:\表\LogisticsLocationInformationLis.sql @Y:\表\main.sql exit
語法和平時sql語法相同,能夠用「--」註釋某些不用的表,最後的exit表示順序執行完成後則推出sqlplus環境。.net
而後再寫一個a.bat文件,內容很簡單,以下:日誌
::sqlplus system/oracle@xe @all.sql>log.txt sqlplus system/oracle@xe @all.sql
裏面寫了兩行,第一行可用於執行過程當中的信息保存到log.txt文件中,若是不須要保存日誌信息,則能夠使用第二行的代碼code
能夠把bat文件寫成下面這樣就好了orm
sqlplus -S /nolog <<EOF conn test/test@test @a.sql @b.sql @c.sql EOF
本人只在Windows環境中測試能夠使用,Linux暫無環境,請自行測試。blog