batファイルでSQLServerのSelect結果をCSV形式で出力する。
sqlcmd -S [サーバ] -d [DB名] -U [ユーザ名] -P [パスワード] -i [SQLファイル名] -v [パラメータ] -b -s [区切り文字] -W -o [出力ファイル名]
※長くなるから変数に持たせると楽
(-W : 後続の空白を削除する)
(-b : エラーが発生したときに、sqlcmd を終了し、DOS ERRORLEVEL 値を返します)
※実行結果を返したいときはSQLをEXITで囲むといい
そしたら、ERRORLEVELに値が設定される。
【実行例】
set SQLCMD=sqlcmd -S svname1 -d dbname1 -U user1 -P test1
%SQLCMD% -i ./sql/test.sql -v param='12345' -b -s, -W -o ./log/test.txt
↓区切り文字をタブにした場合(タブを「"」で囲っただけ)
%SQLCMD% -i ./sql/test.sql -v param='12345' -b -s " " -W -o ./log/test.txt
↓パラメータの詳細はsqlcmd ユーティリティ参照
http://msdn.microsoft.com/ja-jp/library/ms162773.aspx
【test.sql】
SELECT
TESTNAME
FROM
TESTTBL
WHERE
TESTID = $(param)
※実行結果を返したいときはSQLをEXITで囲むといい
EXIT(
SELECT
TESTNAME
FROM
TESTTBL
WHERE
TESTID = $(param)
)