批處理執行多個SQL文件到oracle

最近由於項目須要,打算寫一個批處理程序,更新數據庫中的表數據。寫了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

解決方案:

在Windown環境中:

首先把全部的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

在Linux環境中:

能夠把bat文件寫成下面這樣就好了orm

sqlplus -S /nolog <<EOF
    conn test/test@test
    @a.sql
    @b.sql
    @c.sql
EOF

本人只在Windows環境中測試能夠使用,Linux暫無環境,請自行測試。blog

 

參考出處:http://bbs.csdn.net/topics/390288596

相關文章
相關標籤/搜索