MW211 EXIT

devlog
MSSQL/sqlcmdによるCSV出力
2015年07月22日
SELECT結果をCSV出力する方法。

一番オーソドックスなのは以下の形。
┌──────────────────────────────────────┐
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表];" -h -1 -s, -W            │
│                                                         -o 出力ファイル.csv│
└──────────────────────────────────────┘

上記だと、ヘッダ表が出力されないので自前で出力する場合は以下の通り。
┌──────────────────────────────────────┐
│echo ヘッダ1,ヘッダ2,ヘッダ3> 出力ファイル.csv                              │
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表];" -h -1 -s, -W            │
│                                                         >> 出力ファイル.csv│
└──────────────────────────────────────┘

ヘッダ出力を自動化するのなら、以下のような感じか。
┌──────────────────────────────────────┐
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表] WHERE 1 <> 1;"            │
│                                 -h1 -s, -W | find /V "--"> 出力ファイル.csv│
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM [表];" -h -1 -s, -W            │
│                                                         >> 出力ファイル.csv│
└──────────────────────────────────────┘
出力結果の最初の一行目のみ抽出もしくは最後の一行目のみ削除ってのを
Windowsコマンド上でできればいいのだが、難しいので断念。
分類:MSSQL