
バッチフォルダの構成
バッチフォルダには、メインバッチの run.bat があり、このバッチが3つのバッチ(ユーザ・データベース作成/テーブル作成/テーブル内容表示)を順次起動し、各バッチは SQLファイルを実行する、というのが処理のおおまかな流れです。
バッチフォルダ
│ run.bat
│
├─bat
│ initdb_foodshop.bat
│ create_table_freshfishes.bat
│ find_freshfishes.bat
│
└─SQL
initdb_foodshop.sql
create_table_freshfishes.sql
find_fresh_fishes.sql
run.bat
run.bat は、以下の3つの部品バッチを call
コマンドで順番に呼出し・実行するバッチです。各呼出し後に pause
コマンドでユーザがキーを押すまで処理を中断させます。
- initdb_foodshop.bat(ユーザ・データベース作成)
- create_table_freshfishes.bat(テーブル作成)
- find_freshfishes.bat(テーブル内容表示)
@echo off
rem -------------------------------------------
rem initdb_foodshop.bat の呼出し
rem -------------------------------------------
call initdb_foodshop.bat
pause
rem -------------------------------------------
rem create_table_freshfishes.bat の呼出し
rem -------------------------------------------
call create_table_freshfishes.bat
pause
rem -------------------------------------------
rem find_freshfishes.bat の呼出し
rem -------------------------------------------
call find_freshfishes.bat
pause
bat フォルダ
initdb_foodshop.bat
psql で SQLファイルを実行してユーザとデータベースを作成するバッチです。psql に接続するユーザ・データベースは初期値の postgres としています。
@echo off
rem -------------------------------------------
rem DB接続パラメータ
rem -------------------------------------------
set hostName=localhost
set portNum=5432
rem >>>>> ユーザ名 >>>>>
set userName=postgres
rem >>>>> データベース名 >>>>>
set databaseName=postgres
rem -------------------------------------------
rem psql の実行
rem -------------------------------------------
psql -h %hostName% -p %portNum% -d %databaseName% -U %userName% -f sql/initdb_foodshop.sql
create_table_freshfishes.bat
psql で SQLファイルを実行して fresh_fishes テーブルを作成するバッチです。psql に接続するユーザ・データベースは先のバッチで設定した foodshopmaster/foodshop としていることに注意が必要です。
@echo off
rem -------------------------------------------
rem DB接続パラメータ
rem -------------------------------------------
set hostName=localhost
set portNum=5432
rem >>>>> ユーザ名 >>>>>
set userName=foodshopmaster
rem >>>>> データベース名 >>>>>
set databaseName=foodshop
rem -------------------------------------------
rem psql の実行
rem -------------------------------------------
psql -h %hostName% -p %portNum% -d %databaseName% -U %userName% -f create_table_freshfishes.sql
find_freshfishes.bat
psql で SQLファイルを実行して上記で作成した fresh_fishes テーブルの内容を表示させるバッチです。
@echo off
rem -------------------------------------------
rem DB接続パラメータ
rem -------------------------------------------
set hostName=localhost
set portNum=5432
rem >>>>> ユーザ名 >>>>>
set userName=foodshopmaster
rem >>>>> データベース名 >>>>>
set databaseName=foodshop
rem -------------------------------------------
rem psql の実行
rem -------------------------------------------
psql -h %hostName% -p %portNum% -d %databaseName% -U %userName% -f find_fresh_fishes.sql
SQL フォルダ
psql で実行する SQLファイルは保存形式を Shift-JIS にします。
initdb_foodshop.sql
/*
存在したら DB とユーザを削除
*/
DROP DATABASE IF EXISTS foodshop;
DROP USER IF EXISTS foodshopmaster;
/*
ユーザ foodshopmaster を作成
*/
CREATE USER foodshopmaster WITH PASSWORD 'foodshopmaster' CREATEDB;
/*
データベース foodshop を作成
*/
CREATE DATABASE foodshop
WITH OWNER = foodshopmaster
ENCODING = 'UTF8';
create_table_freshfishes.sql
CREATE TABLE fresh_fishes
(
fresh_fish_id INTEGER,
fish_code INTEGER,
fish_name VARCHAR(30),
locality VARCHAR(30),
unit_price INTEGER,
quantity INTEGER,
total_amount INTEGER,
remarks VARCHAR(30),
PRIMARY KEY(fresh_fish_id)
);
ALTER TABLE fresh_fishes
OWNER TO foodshopmaster;
INSERT INTO fresh_fishes
(fresh_fish_id, fish_code, fish_name, locality, unit_price, quantity, total_amount, remarks)
VALUES
(001, 101, 'いわし', '岩手産', 80, 5, 400, '今朝水揚げ'),
(002, 101, 'いわし', '静岡産', 90, 120, 10800, NULL),
(003, 302, 'かれい', '銚子産', 240, 5, 1200, NULL),
(004, 103, 'さば', '志摩産', 150, 10, 1500, NULL),
(005, 501, 'さけ', '北海道産', 120, 10, 1200, NULL),
(006, 501, 'さけ', '輸入品(ノルウェー産)', 120, 35, 4200, '急速冷凍・自然解凍済み'),
(007, 704, 'いいだこ', '日間賀島産', 220, 10, 2200, 'Lサイズのみ'),
(008, 202, 'ほっけ', '青森産', 360, 5, 1800, NULL);
find_fresh_fishes.sql
SELECT * FROM fresh_fishes;
バッチの実行結果
リモートリポジトリ
バッチを試したい場合は、以下のリモートリポジトリをクローンしてください。
テーブル作成のバッチファイル – GitHub
https://github.com/momotar/bat-file-for-creating-tables
https://github.com/momotar/bat-file-for-creating-tables