ででりんブログ

写真やプログラミングを中心とした雑記帳

スポンサーリンク

【バッチ】PostgreSQLに行挿入するWindowsバッチ

スポンサーリンク

PostgreSQLを学習中のこの頃です。


DBにデータって挿入しまくったら速度ってどうなるの!?と気になったので行挿入するWindowsバッチを作ってみました。


めちゃくちゃ雑ですがバッチファイルの最初にPostgreSQLの本体のあるフォルダやホスト名、DB名などを定義しています。
その情報でDB接続を行い、INSERTのSQLを実行しています。


DBに書き込む情報はタイムスタンプ情報でバッチは無限ループするので終わりたいときはコマンドプロンプトを終了してください。
バッチファイルと同じ場所に書き込んだ回数とSQL実行前後の日時を出力したログファイルも作成されます。

〜
@ECHO OFF
REM --------------------------------------------------
REM DB接続パラメータ
REM --------------------------------------------------
SET PGPATH="C:\Program Files\PostgreSQL\13\bin\"
SET HOSTNAME=localhost
SET PORTNUM=5432
SET DBNAME=postgres
SET USERNAME=postgres
SET PGPASSWORD=1234567890

REM --------------------------------------------------
REM 処理時間計測用のログファイル
REM --------------------------------------------------
SET LOGFILE=result.log

REM --------------------------------------------------
REM SQL実行
REM --------------------------------------------------
SET /a cnt=0

:LOOP
SET /a cnt=cnt+1
SET /P X=%cnt%,%DATE% %TIME%<NUL>>%LOGFILE%
REM %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%でyyyy-MM-ddを生成
%PGPATH%psql -h %HOSTNAME% -p %PORTNUM% -d %DBNAME% -U %USERNAME% -c "INSERT INTO ""TestTable""(""Count"", ""Time"") VALUES(%cnt%, '%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME%');"
ECHO ,%DATE% %TIME%>>%LOGFILE%

goto LOOP
〜


DBのテーブルは下記の構成です。

f:id:dederin-photo:20210723163734j:plain
テーブル構成1
f:id:dederin-photo:20210723184109j:plain
テーブル構成2


書き込み速度の比較は次回にでもやってみたいと思います!

更新:2021/7/27
【PostgreSQL】INSERT、UPDATE速度の単純検証 - ででりんブログ

スポンサーリンク