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


最近因為項目需要,打算寫一個批處理程序,更新數據庫中的表數據。寫了3個sql文件:a.sql,b.sql,c.sql,在這三個文件中,實現了創建表,並向表中插入數據的操作。
目前我通過SQLPLUS可以執行一個SQL文件,例如:
sqlplus test/test@test @a.sql

 

如何在一個批處理文件中,按順序執行三個sql文件。
我新建了一個a.bat文件,在文件中填寫
sqlplus test/test@test @a.sql
@b.sql
@c.sql
執行文件a.bat,只是執行文件a.sql,執行完文件a.sql,不繼續執行后邊的文件,如何才能順序執行批處理中的多個sql文件中的語句呢。

於是到網上找找,我能遇到的問題,別人應該也有遇到的,所以就查到了如下:

解決方案:

在Windown環境中:

首先把所有的sql文件准備好,具體每個文件里面的內容這里就不列出來了。

再准備一個全部執行的sql文件,我暫時叫它All.sql,內容如下:

--@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環境。

然后再寫一個a.bat文件,內容很簡單,如下:

::sqlplus system/oracle@xe @all.sql>log.txt
sqlplus system/oracle@xe @all.sql

里面寫了兩行,第一行可用於執行過程中的信息保存到log.txt文件中,如果不需要保存日志信息,則可以使用第二行的代碼

在Linux環境中:

可以把bat文件寫成下面這樣就行了

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

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

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM