バッチでpostgreDBからデータ抽出を行う


バッチでpostgresDBに接続してデータ抽出を行う。
実行ファイルはedb-psql.exeを用いる。

実行環境

windows server 2008 R2 Standard
psqledit_4.0.4.1

バッチ構成

D:
 |--¥#Batch開発
       |
       |--bat
       |   |--テストpos.bat
       | 
       |--sql
           |--テストpos.sql

テストpos.bat

テストpos.bat
@echo off
SET PGPASSWORD=testpass
SET PGUSER=usr_test
SET PGPORT=5432
SET PGHOST=10.xx.xx.xx
SET PGDATABASE=db_tsna

clip < ¥encoding SJIS

echo #############################
echo ## postgresに接続
echo #############################

D:¥db¥PostgreDB¥migrationstudio¥edb-psql.exe -f "D¥#Batch開発¥sql¥テストpos.sql"

使用するのはpsql.exeではなくedb-psql.exeです。

テストpos.sql

テストpos.sql
¥o PAR_DATA.txt

select 一連番号,更新年月日,sum(金額)
from table_TEST
where 更新年月日 < '20190301' and 更新年月日 > '20190131'
group by 一連番号,更新年月日
order by sum(金額) desc;

¥q

補足説明

先頭に¥o [ファイル名].[拡張子]を記述すると、postgreでファイル出力ができます。
セットとして最後尾に¥qを書いて、勝手に終了するようにします。
sqlスクリプトの保存は文字コードがUTF8、改行コードはLFにしないとうまくSQL文を読み取ってもらえません。
この時、出力ファイル名が日本語の場合は文字化けしてしまうので、今回は英語にしています。
出力ファイル名を変更したい場合は、テストpos.batの中にリネーム(ren)コマンドを付け加えることで対応できます。(コードは模索中です)