ちんとんがめ♪色々備忘録・・・

なんか、メモ的な感じで使えればいいなみたいな。。。前検索したけど、忘れて同じもの検索するのって面倒だよね?・・・でも、結局検索するみたいな。。。

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)
)