【コマンドプロンプト】完成版!cmdでSQLの結果を変数に取得
以前、
【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法
を書きましたが、コレの完成版です。
前回のでは、ERRORLEVELに取得するというちょっと強引な方法でしたが、今回はしっかりと変数にセットできます。まぁ件数とかだけなら前回の方法でも十分ですが。。
8行目 :サーバー名
10行目:データベース名
12行目:結果を取得したいSQL
35行目:FORの「tokens」をSQLで取得するカラム数にあわせる
39行目:CALLの引数を取得カラム数分指定する
46行目以降が取得した結果に対して、実行したい処理を記述(サンプルでは、echoで表示)
@echo off REM ################################################# REM 変数セット REM ################################################# REM サーバー名 SET SERVER=【サーバー名】 REM データベース名 SET DATABASE=【データベース名】 REM 実行SQL SET SQL=SELECT TOP 3 [商品番号]^ ,[商品名]^ ,[区分番号]^ ,[価格],[原価]^ ,[商品写真]^ ,[販売開始日]^ ,[販売終了日]^ ,[更新日] ^ FROM [db_Sales].[Product].[商品] REM 行数カウント用 SET /A ROWCNT=0 REM sqlcmdコマンドの作成 SET SQLCMD=sqlcmd -S %SERVER% -E -d %DATABASE% -h -1 -s "," -Q "EXIT(set nocount on;%SQL%)" REM ################################################# REM FOR文を使って、SQL結果1行ずつ取得 REM ################################################# REM SQLを実行し、カラムを取得する REM ※SQLで取得するカラム数分の「tokens」を指定 FOR /F "usebackq delims=, tokens=1,2,3,4,5,6,7,8,9" %%i IN (`%SQLCMD%`) DO ( REM 1行ずつ処理する為、CALLで呼び出し(カラム数分を引数として渡す) REM ※取得したカラムにスペースがあるときは、「"」で囲んで渡さないと引数が分割される CALL :PROCESSING %%i %%j %%k %%l %%m %%n %%o %%p %%q ) pause exit :PROCESSING REM ################################################# REM 処理を記載 REM ################################################# REM 引数から取得 SET COL1=%1 SET COL2=%2 SET COL3=%3 SET COL4=%4 SET COL5=%5 SET COL6=%6 SET COL7=%7 SET COL8=%8 SET COL9=%9 REM 行数カウント SET /A ROWCNT=%ROWCNT%+1 REM 1行づつ画面に出力 echo ======================== echo %ROWCNT%行目 echo ======================== echo カラム1:%COL1% echo カラム2:%COL2% echo カラム3:%COL3% echo カラム4:%COL4% echo カラム5:%COL5% echo カラム6:%COL6% echo カラム7:%COL7% echo カラム8:%COL8% echo カラム9:%COL9% echo.
実行した結果が↓
Adsense
関連記事
-
-
【SQL Server】varchar型、nvarchar型の文字数とバイト(byte)数を取得する
varchar型の文字数、バイト(byte)数を取得する方法 SELECT LEN(【文字
-
-
【コマンドプロンプト】前日日付、月末日付を変数に取得するバッチ。うるう年対応
コマンドプロンプトを使って前日、指定日、月末日付を変数に取得する。 「SearchDay」に入
-
-
【コマンドプロンプト】バッチでセクション付のINIファイルの読み込み
バッチファイルでINIファイルから値を読み込む 1.INIファイルの用意 以下の「バッチファイル
-
-
【コマンドプロンプト】バッチファイルでCSVを1行ずつ処理をする方法
僕はプログラマーではないので、あまりカッコイイプログラムはかけませんが、CSVファイルを1行ずつ、バ
-
-
【SQLServer2012】バックアップ/リストア方法 リストア編
SQL Server 2012のデータベースをManagement Studioを使用して、リストア
-
-
【Management Studio】データベースの定義を取得する方法
あくまでデータベース定義の取得です。 ※データベースのデータを取得する方法ではありません。
-
-
【Management Studio】テーブル単位のメモリ使用量の確認
1.Management Studioを起動し、メモリ使用量が確認したい対象サーバーへ接続 2.確
-
-
【SQL Server 2012】テーブル、カラム、主キー、NULL制約、データ型、長さ、INDEXの有無の一括表示
職場のシステムリプレースに伴い、データベースのテーブル(カラム)の一覧が必要になりました。 普
-
-
【コマンドプロンプト】net use で共有フォルダに接続できない場合。
システム エラー 1219 が発生しました。 同じユーザーによる、サーバー
-
-
【SQL Server】データベース作成日時(リストアした日付)を確認する方法
トラブルの調査をするとき、開発用の環境を作成して、調査するのですが… この環境っていつ作成した