8

これらは以前に尋ねられたと確信していますが、バッチファイルを作成する方法を明確な指示が見つからない場合は、「データベースの更新」と呼んでください。このバッチファイルは

別のフォルダーにある SQL スクリプトを実行します。別の 3 つのバット ファイルを実行します。

それを行う方法の簡単な例はありますか?前にやったことがない

編集済み

私はこれを行うことができますか?

:On Error exit 

:r C:\myPath\MasterUpdateDatabase.bat
GO 
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql

エラーが発生します:

「GO」が内部外部コマンドとして認識されない

ご意見ありがとうございます

4

4 に答える 4

6

DOS コマンドを使用して、(a) 他のバッチ ファイルを実行するか、(b) SQLCMD を実行して SQL または SQL スクリプトを実行するバッチ ファイルを作成しようとしているようです。

以下は、すべてが 1 つにまとめられた 2 つの例です。STARTスイッチ付きの DOS コマンドを使用して/WAITいます。これにより、元の「マスター」バッチ ファイルが 1 つのウィンドウで実行されたままになり、後続のファイルまたはコマンドが新しいウィンドウで実行されます。その新しいウィンドウは、スクリプトが終了して終了するまで開いたままになります。

一部の はECHOおそらく必須ではありませんが、スクリプトは今のところ、少しだけ応答します。

@echo off

つまり、スクリプトを実行しているだけという意味で、これは非常に単純です。script1.bat にブレーク ポイントがある場合は、メイン スクリプトにエラーを返して、すぐに終了させることができます。それがマスター スクリプトで実行する必要があるかどうかはわかりませんでした。

echo Starting Database Update.
echo.

echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat

echo If there was a problem, break here.
Pause

echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat

echo If there was a problem, break here.
Pause

これは、同じ START /WAIT を使用して SQLCMD を実行した場所です。この場合は、クエリから結果を返すだけです。ここで注意すべきことの 1 つは、-Q(大文字) がクエリを実行して終了することです。(小文字)を使用する-qと、クエリが実行され、別のクエリを待機する SQLCMD で開いたままになります。

echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"

そして、これは SQL スクリプトを実行する方法です。これは が-i示すものですが、以前のように START /WAIT でこれを実行しませんでした。しなければならないというわけではありませんが、両方の例を示したかったのです。これは、スクリプトがエラーを返した場合にバッチ プロセスを終了することも示してい-bます。これは、前者の成功に依存する複数のスクリプトを実行している場合に役立ちます。

echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i  C:\path\to\your\script.sql -b

echo.
echo Update Complete.
pause

End

したがって、SQLCMD を利用した .bat または .cmd ファイルを探していると想定しました。私が提供した例はかなり基本的なものですが、うまくいけば、正しい道に進むことができます.

おー!また、CTRL+C は処理中のバッチ スクリプトを中断することに注意してください。

于 2010-10-21T19:31:48.443 に答える
1

表示されている実際のエラーは、コマンド ライン インタープリターが 'GO' を認識しないため、その行を削除するだけで済みます。

于 2010-10-28T16:54:33.640 に答える
0

これがあなたに役立つことを願っています:

sqlplus UserName/Password@DataBase @C:\myPath\InsertUsername.sql

PS : コマンド「commit;」を追加することを忘れないでください。sql ファイル (InsertUsername.sql) の最後で、このコマンドは Oracle に、実行された変更を darabase に保存するように命令します。

于 2013-12-23T13:02:17.970 に答える