PostgreSQLでコマンドラインからSQLファイルを実行する

概要

PostgreSQLコマンドラインから、特定のスキーマに対してSQLを発行する方法

準備

psql postgres 等で適当なデータベースに入ってroleの作成

create role commander with login;

コマンドラインからデータベースの作成

$ createdb --owner commander command_test

スキーマの作成

psql -U commander -d command_test で作成したデータベースに入って、スキーマの作成

create schema sample;

コマンドラインから実行

SQLファイルの作成

test.sql という名前でSQLファイルを作成する。

psqlからスキーマの指定方法がわからなかったので、スキーマ切り替えもSQLファイルで行う。

-- スキーマ切り替え
SET search_path = sample;

-- スキーマ表示
select current_schema();

-- サンプル実行
select 1 as hoge;

実行

# psql -d {データベース名} -U {ユーザ名} -f {ファイル名}
psql -d command_test -U commander -f test.sql

結果

こんな感じになります。

SET

 current_schema
----------------
 sample
(1 row)

 hoge
------
    1
(1 row)

参考

[PostgreSQL] よく使うコマンドまとめ | Developers.IO