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

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

PowerShellでSQLServerのSelect結果をCSV形式で出力する。

コマンドプロンプトのコマンドを使用する場合
$sqlcmdtest = "sqlcmd -S [サーバ名] -d [DB名] -U [ユーザ名] -P [パスワード]"
cmd.exe /C ("$sqlcmdtest -i [SQLファイル名] -v [パラメータ] -b -s[区切り文字] -W -o [出力ファイル名]")

【実行例】
$sqlcmdtest = "sqlcmd -S svname1 -d sbname1 -U username1 -P test1"
cmd.exe /C ("$sqlcmdtest -i ./sql/test.sql -v param='1234' -b -s, -W -o ./log/test.txt")
 ↓区切り文字をタブにする場合
cmd.exe /C ("$sqlcmdtest -i ./sql/test.sql -v param='1234' -b -s ""`t"" -W -o ./log/test.txt")


PowerShell
$ret = Invoke-Sqlcmd -InputFile [SQLファイル名] -Variable [パラメータ] -ServerInstance [サーバ名] -Database [DB名] -Username [ユーザ名] -Password [パスワード] | ConvertTo-CSV -NoTypeInformation
$ret | Out-File [出力ファイル名] -force
※パラメータが複数有る場合、配列にすると良い

【実行例】
$varAry = "param1 = '1234'", "param2 = '4567'"
$ret = Invoke-Sqlcmd -InputFile ./sql/test.sql -Variable $varAry -ServerInstance svname1 -Database sbname1 -Username username1 -Password test1 | ConvertTo-CSV -NoTypeInformation
$ret | Out-File ./log/test.txt -force
 ↓区切り文字をタブにする場合
$ret = Invoke-Sqlcmd -InputFile ./sql/test.sql -Variable $varAry -ServerInstance svname1 -Database sbname1 -Username username1 -Password test1 | ConvertTo-CSV -Delimiter "`t" -NoTypeInformation
$ret | Out-File ./log/test.txt -force

※Out-Fileでファイルを出力する際、最終行移行に追記する場合は、 -Appendをつけるとよい

(-NoTypeInformation:いらないTYPE情報とか表示しないようにする)
(-Delimiter:区切り文字)


batファイルでSQLServerのSelect結果をCSV形式で出力する。 - ちんとんがめ♪色々備忘録・・・