バッチファイルから
・sqlcmd(SELECT文)を実行して
・結果をCSVファイルへ出力
する方法を紹介します!
CSVファイルには
・列名(カラム名)も出力
させます!
前提
単純にsqlcmd(SELECT文)を実行して結果をファイルへ出力すると、以下のように2行目に「- -」が出力されてしまいます。
2行目の「- -」は不要のため取り除きます。
取り除くためにひと手間を加えます。
サンプルプログラムの概要
バッチファイルから
・sqlcmd(SELECT文)を実行して、結果をtempファイルへ出力
・tempファイルの先頭が「-」でない行を、CSVファイルへ出力
・後片付けとしてtempファイルを削除
します。
実行するSELECT文は以下とします。
SELECT * FROM employee
サンプルプログラム作成
@echo off
REM #####################
REM ★接続情報
REM #####################
REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM tempファイルのパス
set tempFilePath=C:\Users\user\Desktop\temp.csv
REM CSVファイルのパス
set csvFilePath=C:\Users\user\Desktop\result.csv
REM 実行するSQL文(SELECT文)
set sql=SET NOCOUNT ON; SELECT * FROM employee
REM SELECT文を実行しtempファイルへ出力 ※区切り文字をカンマ、余分なスペースを削除
sqlcmd -S %dbServer% -d %dbName% -E -s "," -W -o %tempFilePath% -Q "%sql%"
REM tempファイルの先頭が「-」でない行をCSVファイルへ出力 ※2行目の「---」を取り除く
findstr /V "^-" %tempFilePath% > %csvFilePath%
REM tempファイルを削除
del %tempFilePath%
pause
exit
実行結果
sqlcmdのSELECT結果をCSVファイルへ出力できました。
※列名(カラム名)も出力できました。
※2行目の「- -」 を取り除くこともできました。
参考①
PowerShellからinvoke-sqlCmdを使用して、SELECT結果をCSVファイルへ出力することもできます。
詳細は以下の記事をご確認ください。
参考②
VBAからSELECT結果をCSVファイルへ出力することもできます。
詳細は以下の記事をご確認ください。
参考③
VBAにより、出力したCSVファイルをExcelへ読み込めます。
詳細は以下の記事をご確認ください。