PowerShellでSelect結果をCSV出力

2020年3月1日日曜日

シリーズ目次

前置き

もう何番煎じか分からないテーマですが、なるべくすっきり書ける方法がないかやってみました

やりたいことは、
・文字コードはUTF8
・ダブルクォーテーションで括る
・1行目はヘッダー情報

まずはこのストアドを見てほしい
うむ、なにやってるのかさっぱり

bcpとsqlcmdでCSVを出そうとした場合、ヘッダー情報が出ないため、まずヘッダー情報をSQLで生成している。
またダブルクォーテーションで括ってくれないので、カラムの前後に付加している。

これはこれで利用価値はあるけど、やはり冗長。
ヘッダー情報をunionしたり、ダブルクォーテーションのエスケープ処理したりで、マジで使いづらい。

なるべくストアド内で済ませようと設計したのですが、一度作って考えてた結果、やはりpowershellでやることに。
powershellならパイプでexport-csvできるので、かなりすっきりするはず!

PowerShellでSelect結果をCSV出力

んで結果こうなりました。めっちゃスッキリ!!
5行目でテーブル一覧を取得。
7行目でループ処理、Select文とファイルパスを生成。
11行目でSelect文を発行して、パイプでExport-CSV、オプションで文字コードUTF8を指定、「-NoTypeInformation」をつけておくと1行目にデータ型が入らなくなります。

出力されたデータを見てみましょう。


ちゃんとヘッダーも出てるし、ダブルクォーテーションもバッチリ!!

次回