我必須一次運行多個SQL腳本文件。想要在SQLPLUS中一次運行多個SQL腳本文件
就像我每次都在sqlplus
SQL>@d:\a.txt SQL>@d:\a2.txt SQL>@d:\a3.txt SQL>@d:\a4.txt
寫命令時,有沒有辦法把所有的文件一個文件夾&運行一氣呵成的所有腳本文件中,而不會錯過像@d:\final.txt
或@d\final.bat
我必須一次運行多個SQL腳本文件。想要在SQLPLUS中一次運行多個SQL腳本文件
就像我每次都在sqlplus
SQL>@d:\a.txt SQL>@d:\a2.txt SQL>@d:\a3.txt SQL>@d:\a4.txt
寫命令時,有沒有辦法把所有的文件一個文件夾&運行一氣呵成的所有腳本文件中,而不會錯過像@d:\final.txt
或@d\final.bat
沒有單個SQL * Plus命令來做到這一點,但您可以創建一個調用所有其他腳本的腳本:
將以下內容放入批處理文件中
@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"
當您運行批處理文件,它會創建一個在批處理文件所在的同一目錄中名爲all.sql
新的腳本。它將在批處理文件所在的同一目錄中查找擴展名爲.sql
的所有文件。
然後,您可以運行使用sqlplus user/pwd @all.sql
所有腳本(或擴展批處理文件創建all.sql
腳本之後調用sqlplus
)
@rahuljain:抱歉,我不知道您在說什麼。 –
我跑了批處理文件。 all.sql文件創建正常。我打開這個文件,這個文件的代碼是「D:\ test_SQL \ Patch03.01.486.txt」 @「D:\ test_SQL \ Patch03.01.487.txt」 @「D:\ test_SQL \ Patch03.01.488.txt」 如果我運行文件像@ all.sql這會工作正常嗎? 我必須在prod –
這裏是類似的解決辦法,但你不必迭代,並有特殊的格式化的SQL文件名稱。你組成一個sql文件並運行一次。
cat table_animal.sql > /tmp/temp.sql
cat table_horse.sql >> /tmp/temp.sql
cat table_fish.sql >> /tmp/temp.sql
sqlplus USERNAME/[email protected] @/tmp/temp.sql
中運行這個所有txt文件。同樣,如果要連接目錄中的所有SQL文件,可以使用'cat * .sql> temp.sql'。 – DavidS
一些技巧和命令可以幫助您生成master.sql文件,您可以從該位置運行。
c:\direcotory_location\dir *.sql /-t /b >master.sql
去開master.sql打開使用記事本++ 刪除master.sql線,並使用正則表達式的父目錄替換
\n with \n @
去到CMD 從CMD
C:\root_directory\sqlplus user/password @master.sql
我發現這個過程非常方便,如果我有30到40個腳本放在一個目錄中。
如果您使用GNU Linux,你可以使用process substitution:
sqlplus USERNAME/[email protected] < <(cat a.txt a2.txt a3.txt a4.txt)
# ... or a for loop on input files, inside the process substitution
或者,你可以創建一個.pdc
文件,列出你的SQL腳本:
-- pdc file
@a.txt;
@a2.txt;
@a3.txt;
@a4.txt;
和調用SQL加:
sqlplus USERNAME/[email protected] < my_scripts.pdc
對於Windows請嘗試 警察y/b * .sql + x final.sql
sqlplus user/password @ final.sql
你試過windows批處理文件嗎? (打開記事本,按順序逐行寫入命令),然後將文件保存爲FileName.bat(確保從保存對話框的底部選擇了「所有文件」選項。通過雙擊運行批處理文件可以解決問題。或者您可能需要在該bat文件中使用一些高級批處理命令 –