web-dev-qa-db-ja.com

ディレクトリ内のすべてのSQLファイルを実行する

他の開発者が行った変更をSQL Server 2005データベースに適用するために実行する必要がある多くの.sqlファイルがあります。ファイルには、次のパターンに従って名前が付けられます。

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

すべてを一度に実行する方法はありますか?

107
K.A.D.

次のコマンドで.BATファイルを作成します。

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

この.BATファイルを.SQLファイルを実行するディレクトリに配置し、.BATファイルをダブルクリックして完了です!

132
Vijeth

FOR を使用します。コマンドプロンプトから:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
67
Remus Rusanu
  1. SQL Management Studioで新しいクエリを開き、以下のようにすべてのファイルを入力します

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. SQL Management Studioの[クエリ]メニューに移動し、SQLCMDモードが有効になっていることを確認します
  3. SQLCMDモードをクリックします。ファイルは以下のようにグレーで選択されます

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. 今すぐ実行
22

Management Studioで[クエリ]> [SQLCMDモード]オプションをクリックして、SQLCMDが有効になっていることを確認します。

  1. フォルダーscript1.sql,script2.sql,script3.sql,script4.sqlに4つの.sqlファイル(c:\scripts)があるとします。

  2. 次を使用してメインスクリプトファイル(Main.sql)を作成します。

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Main.sqlをc:\ scripts自体に保存します。

  3. 次を使用してExecuteScripts.batという名前のバッチファイルを作成します。

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    <YourDatabaseName>を、スクリプトを実行するデータベースに置き換えることを忘れないでください。たとえば、データベースが「従業員」の場合、コマンドは次のようになります。

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. 同じファイルをダブルクリックして、バッチファイルを実行します。

18
Ashish Gupta

ApexSQL Propagate を使用できます。複数のデータベースで複数のスクリプトを実行する無料のツールです。必要な数のスクリプトを選択して、1つまたは複数のデータベース(複数のサーバーを含む)に対して実行できます。スクリプトリストを作成して保存し、作成した順序で同じスクリプトを実行するたびにそのリストを選択するだけです(複数のスクリプトリストを追加することもできます)。

Select scripts

スクリプトとデータベースが選択されると、それらはメインウィンドウに表示されます。実行する必要があるのは、「実行」ボタンをクリックするだけです。すべてのスクリプトは、選択されたデータベースで指定された順序で実行されます:

Scripts execution

9
Kevin L

一般的なクエリ

batch.batという名前でメモ帳に次の行を保存し、すべてのスクリプトファイルがあるフォルダー内に配置します。

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

(* .sql)の%% Gの場合sqlcmd/S NFGDDD23432/d EMPLYEEDB -i "%% G" pause

ログインが失敗した場合は、sernameおよびpasswordで以下のコードを使用してください

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

(* .sql)の%% Gに対して、sqlcmd/S NE8148server/d EMPLYEEDB -U Scott -P tiger -i "%% G" pause

スクリプトファイルがあるフォルダー内にbatファイルを作成したら、スクリプトが実行されるbatファイルをクリックするだけです

7
Lijo

オープンソースユーティリティ をC#で記述しました。これにより、多くのSQLファイルをドラッグアンドドロップし、データベースに対して実行を開始できます。

このユーティリティには次の機能があります。

  • スクリプトファイルのドラッグアンドドロップ
  • スクリプトファイルのディレクトリを実行する
  • 実行中のSQLスクリプト出力メッセージ
  • 緑と赤(実行中は黄色)に色分けされたスクリプトは合格または不合格
  • エラー時に停止オプション
  • エラー時にスクリプトを開くオプション
  • 各スクリプトにかかった時間でレポートを実行する
  • 総継続時間
  • DB接続のテスト
  • アシンクロナス
  • .Net 4およびSQL 2008でテスト済み
  • 単一のexeファイル
  • いつでも接続を終了
5
Clinton Ward

私が知っていることは、osqlまたはsqlcmdコマンドを使用して複数のsqlファイルを実行できることです。欠点は、両方のコマンドのスクリプトを作成する必要があることです。

SQLCMDを使用して複数のSQL Serverスクリプトを実行する

OSQL(これはSQL Server 2000用です)

http://msdn.Microsoft.com/en-us/library/aa213087(v = SQL.80).aspx

2
Aseem Gautam
@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --Host=ip --port=3306 --user=uid--password=ped < %%a
)

ステップ1:上記の行をメモ帳にコピーして、バットとして保存します。

ステップ2:SQLサーバーで実行されたクエリ内のすべてのSQLファイルのdドライブabcフォルダー。

ステップ3:IP、ユーザーID、パスワードを入力します。

1

Interactive SQLを使用できる場合:

1-このコードで.BATファイルを作成します。

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2-pwdおよびServerNameを変更します。

3-.SQLファイルを含むフォルダーに.BATファイルを入れて実行します。

0
Alberto Labuto

同じディレクトリですべてのSQLfileを実行するには、次のコマンドを使用します。

ls | awk '{print "@"$0}' > all.sql

このコマンドは、ディレクトリ内のすべてのSQLファイルの名前に「@」を追加した単一のSQLファイルを作成します。

all.sqlが作成された後、SQLPlusでall.sqlを実行するだけで、all.sql内のすべてのsqlファイルが実行されます。

0
user7609040

他のすべてを呼び出す単一のスクリプトを作成できます。

以下をバッチファイルに入れます。

@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を呼び出すようにバッチファイルを拡張します)

0
rahul jain