忍者ブログ
IT関係の小作人労働の日々の日記です。 最近データベースが好きです。 インフラ構築、DB構築、アプリケーション開発・・・何でも屋です。 何でもできそうで、何にもできない。

【PostgreSQL】Ubuntu + PostgreSQL スクリプト実行ガイド 〜 .sql ファイルの作成から psql での実行・検証まで 〜

本ガイドでは、Ubuntu環境において PostgreSQL のスクリプトファイル(.sql)を作成し、ターミナルから psql コマンドを使って実行する手順を解説する。

対話型シェルにログインして実行する基本方法から、シェルスクリプトなどの自動化(バッチ処理)に組み込む際の本質的な外部実行プロセスまで、ステップバイステップで検証を進めていく。


1. 開発環境の準備(ターミナルの操作)

まずはUbuntu環境に PostgreSQL が導入されているか確認する。未インストールの場合は、パッケージ管理システムの apt を用いて以下の通り導入を行う。

■ インストールの確認と実行

# パッケージインデックスの更新とインストール
sudo apt update
sudo apt install -y postgresql postgresql-contrib

# データベースサービスの起動ステータス確認
sudo systemctl status postgresql

2. スクリプトファイルの作成

検証用の作業ディレクトリを作成し、テストとして「Hello World」の文字列を出力するだけのシンプルなSQLファイルを用意する。

■ 作業フォルダの作成と移動

mkdir ~/psql-study && cd ~/psql-study

■ テスト用SQLファイルの作成(コマンドラインより生成)

echo "SELECT 'Hello World' AS message;" > hello.sql

3. PostgreSQLへのログイン

UbuntuにおけるPostgreSQLの初期設定では、データベースの最高管理権限は postgres という名前のOSユーザーに紐づけられている。
そのため、以下のようにOSの管理者権限を介して psql シェルへログインする。

■ 管理者権限(スーパーユーザー)でのログイン

sudo -u postgres psql

sudo -u postgres を付与することで、ログインパスワードの入力を求めることなく、安全にPostgreSQLの内部プロンプトへ入ることができる。


4. ファイルの実行(対話モードでの実践)

psql の対話型プロンプト内で、先ほど作成した外部の .sql ファイルを読み込んで実行させる。

■ スクリプトの実行メタコマンド

プロンプト postgres=# が表示されている状態で、ファイルを指定して以下のインクルードコマンドを入力する。

postgres=# \i hello.sql

■ 期待される実行出力

   message    
-------------
 Hello World
(1 row)

無事に結果が得られたら、以下のメタコマンドで対話型シェルを終了(離脱)する。

postgres=# \q

5. 本質的な「検証」:OSコマンドラインからの非対話実行

実際のシステム運用や、シェルスクリプト(Cronジョブなど)による自動バッチ処理にSQLを組み込む際、わざわざ対話モードに手動ログインするのは現実的ではない。
そこで、プロンプトに入らず、Ubuntuのコマンドラインから直接SQLファイルを流し込んで結果を得る方法を検証する。

ターミナル上で、ディレクトリが ~/psql-study にあることを確認し、以下のコマンドを実行する。

sudo -u postgres psql -f hello.sql

■ 技術解説:-f オプションの役割

-f(file)オプションを使用することで、指定したファイルの中身を直接PostgreSQLのエンジンにパイプラインで流し込み、実行結果をそのまま標準出力(stdout)としてターミナルへ戻すことができる。

この非対話コマンドが正常に通れば、「SQLファイルの外部実行プロセス」がUbuntu環境において正しくセットアップできている証明となる。これをベースに、シェルスクリプトでのデータ抽出や定期バックアップタスク等への応用が可能だ。


PR