Windows環境でのSqlファイルの一括実行
シナリオ フォルダ内の全sqlファイルをファイル名の正順で一括実行し、ログを出力する。
向いている人 実装技術者
I. 使用方法
1. batファイルを用意する。
1.1、ExecSql.bat(実行スクリプト)(ファイルエンコーディング。ANSI、このエンコーディングは後述のutf8ともgb2312とも異なる、メモ帳での編集はデフォルトでこのエンコーディングなので、メモ帳++を再生する必要はない)
@ECHO OFF
SET dbhost=127.0.0.1
SET dbuser=sa
SET dbpasswd=sa
SET dbName=Application
REM The following contents are not recommended to be modified
REM The path to execute the script, here is the current path
SET sqlpath=%~dp0
REM Log file name
SET temp=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log
SET logFileName=%sqlpath%%temp: =0%
::Execute sql script
echo Start sql script execution, all logs are recorded in %logFileName%
for /r %%i in (*.sql) do ( echo %%i is executed & echo ----- %%i log start ----- >> %logFileName% & sqlcmd -S %dbhost% -U %dbuser% -P %dbpasswd% -d % dbName% -i %%i -k -b -m 10 >> %logFileName% & echo ----- %%i log end ----- >> %logFileName% & @echo. >> %logFileName%)
ECHO Done!
PAUSE
@ECHO OFF
for /r %%i in (*.sql) do ( echo %%i )
ECHO done!
PAUSE
3、[オプション]ソート、SQLファイルの要件の実行順序は、ファイル名を変更する必要がある場合は、上記のように、ファイル名の正の順序の実行順序は、それは&quotを使用することをお勧めします;01."などファイル名のプレフィックスとして
ShowOrder.batをターゲットのルートディレクトリにコピーし、ダブルクリックして実行し、実行順序が予想通りであるかどうかを確認します。
4. [重要]エンコーディングの変換は、一般的に.sqlファイルのエンコーディングはutf8、もし.sqlファイルの内容は、中国語(コメントはカウントされません)を使用して、あなたはGB2312にファイルのエンコーディングを変更する必要があります、それ以外の場合は間違ったSQL文が実行されます。
例えば、01.XXX.sqlのエンコーディングはutf8ですが、データベースに挿入されるデータは文字化けしています。
次の4.1、4.2のいずれかを実行します。
4.1. エンコードを変更するには、メモ帳で.NET Frameworkを開いてください。 sqlファイルを開き、ctrl+A(すべて選択)、ctrl+C(コピー)、メモ帳 "エンコード" -> "エンコード文字セット" -> Chinese"-> "GB2312" をクリックすると回復できない警告が出て、はい、クリック、ctrl+A(すべて選択)、 ctrl+V(ペースト)、最後に保存する。
4.2. ツールを使用する ( エンコーディングコンバーター ) バッチ修正:ツールをダウンロードし、実行するためにそれを解凍し、次の設定に示すように、BatchConvertor.exeをダブルクリックします。
変換が完了した後、再度実行し、正しい中国語を取得します
5は、バットファイルを変更するには、メモ帳++または他のエディタを使用して、ExecSql.batでデータベース接続関連の情報を開き、唯一のデータベースへの接続に関連する4つの変数を変更することができます、他の変更する必要はありません、変更後に保存します。
6. 6. bat ファイルをダブルクリックすると、次のような出力が得られます。
7. ログを見て、それぞれの.logファイルをチェックします。メッセージがないのは良いニュースです。正しいスクリプトを実行した.logファイルは通常次のようなものです。
エラーもフィードバックされます。例えば、スクリプトが再度実行されると、エラーが報告されます。
特記事項:このbatファイルは、カレントフォルダ内のすべての.sqlファイルをチェックして実行するので、batを再度実行する際には、再度実行する必要のないいくつかの.sqlファイルを削除する必要があります。
II. 原則
sqlcmdとosqlコマンドはどちらもSQLファイルを実行することができ、ほとんど同じパラメータを持っています。ログ出力がよりきれいで、Microsoftが将来的にSqlServerからosql(もはやサポートされていない)を削除するつもりであるため、ここではsqlcmdが選ばれています。どちらのコマンドも cmd で XXX/? を使ってヘルプを照会することができます。
sqlcmdの公式ドキュメントです。
https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility?view=sql-server-ver15
osql の公式ドキュメントです。 https://docs.microsoft.com/zh-cn/sql/tools/osql-utility?view=sql-server-ver15
関連
-
SQLインジェクションとその防止、マイベイトの基本的な役割について
-
SQLの書き方--行ごとの比較
-
NavicatはSQL Serverのデータに接続します。エラー08001に対する完璧な解決策 - Named Pipeline Provider
-
日付で年齢を判定するSQLサンプルコード 関数
-
SQL Server のフィルタードインデックスによるクエリ文の改善に関するパフォーマンス分析
-
SQL Serverでの判定文(IF ELSE/CASE WHEN)の使用例
-
SQLServerにおけるJSONドキュメント型データのクエリ問題を解決する。
-
SQLサーバーのデータベースで、SAユーザーがロックされている問題を解決する
-
SQL SERVERオープンCDC実践講座詳細
-
Spark SQLの全体的な実装ロジックの説明
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL SERVERのストアドプロシージャを使用した履歴データの移行について
-
SQL ServerのSELECT INTOとINSERT INTOのSELECTのケースを説明する
-
Filestreamの簡単な使い方まとめ
-
mybatis動的SQL実装ロジックコード詳細
-
リレーショナルデータベースと非リレーショナルデータベースの紹介
-
mybatis動的SQLの共通シナリオのまとめ
-
SQLスキルのデータベースは、ケースを整理する
-
SQLServerのエラーです。15404, unable to get information about Windows NT group/user WIN-8IVSNAQS8T7Administrator
-
sql serverで最初の1000行のデータを削除する方法の例
-
データベース毎日練習問題、毎日少しづつ進歩(2)