Tei5’s Blog

Tei5 の メモ書き

Sqlcmd から、CSVの出力を整えたい

1)「n件処理されました。」を消す

SQLCMDで出力時、最後に、「n件処理されました。」も出力されてしまう。
これを出ないようにするには、SQLの中に「set nocount on」を書いておく。

 

2)2行目の「---,---」を取りたい

ヘッダーを消すのは、sqlcmdのオプションに「 -h -1 」を付けると、ヘッダーと、2行目の「---」が消える。2行目だけ消すのは出来ないみたい。

SQLCMDでハイフンを抑制する方法 : 初心者入門サンプル

 

対策A)出すだけ出して、2行目をsedawkで抜く。

   (例)sqlcmd ~~~~ | gawk "NR!=2{print}"

 

対策B)ヘッダーを「-h -1」で非表示にして、さらにヘッダーを自前で出力。

  • (B-1) クエリ内で ヘッダをUNION
    SELECT 'FirstName' as FirstName, 'LastName' as LastName
    UNION
    SELECT top 5 FirstName, LastName FROM Person.Contact
  • (B-2) 呼び出した、バッチファイル内などで、ヘッダを作成
    ECHO FirstName,Lastname > output.csv
    sqlcmd ~~~~ >> output.csv