【コマンドプロンプト】完成版!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 2012】Management Studioで誰がデータベースに接続しているか調べる。
SQL Server 2012でリアルタイムで接続しているユーザーを確認するには Manageme
-
-
【コマンドプロンプト】バッチファイルでCSVを1行ずつ処理をする方法
僕はプログラマーではないので、あまりカッコイイプログラムはかけませんが、CSVファイルを1行ずつ、バ
-
-
【SQL Server】エクセルをテーブルに取り込む方法
以前にManagement Studioを使ってSQLでエクセルを直接取り込む方法を書きましたが、今
-
-
【SQL Server 2012】Management Studioを使ったバックアップで面白い機能。
Management Studioを使ったバックアップをかれこれ3年くらいやってるんですが、一つのバ
-
-
【SQL Server】データベース作成日時(リストアした日付)を確認する方法
トラブルの調査をするとき、開発用の環境を作成して、調査するのですが… この環境っていつ作成した
-
-
【SQL Server】Excel VBAでSQLを実行し、レコードを更新(追加、更新、削除)する
VBAでSQL Serverのテーブルに SQL(Insert、Update、Delete)を発行
-
-
【SQL Server】varchar型、nvarchar型の文字数とバイト(byte)数を取得する
varchar型の文字数、バイト(byte)数を取得する方法 SELECT LEN(【文字
-
-
【コマンドプロンプト】改行コード CR、LF、CRLFの出力とテキスト書き出し。
仕事でバッチファイルを使っているとログ出力が非常に大事になる。 細かくログを出すことによって、
-
-
【SQL Server 2012】SQLでエクセルをテーブルとして表示させる方法
SQL Management Studioを使用してインポート等は使用せずにSQLのみでテーブルを表
-
-
【Management Studio】テーブル単位のメモリ使用量の確認
1.Management Studioを起動し、メモリ使用量が確認したい対象サーバーへ接続 2.確

