【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ファイルを用意する。
■ 作業フォルダの作成と移動
■ テスト用SQLファイルの作成(コマンドラインより生成)
3. PostgreSQLへのログイン
UbuntuにおけるPostgreSQLの初期設定では、データベースの最高管理権限は postgres という名前のOSユーザーに紐づけられている。
そのため、以下のようにOSの管理者権限を介して psql シェルへログインする。
■ 管理者権限(スーパーユーザー)でのログイン
※ sudo -u postgres を付与することで、ログインパスワードの入力を求めることなく、安全にPostgreSQLの内部プロンプトへ入ることができる。
4. ファイルの実行(対話モードでの実践)
psql の対話型プロンプト内で、先ほど作成した外部の .sql ファイルを読み込んで実行させる。
■ スクリプトの実行メタコマンド
プロンプト postgres=# が表示されている状態で、ファイルを指定して以下のインクルードコマンドを入力する。
■ 期待される実行出力
-------------
Hello World
(1 row)
無事に結果が得られたら、以下のメタコマンドで対話型シェルを終了(離脱)する。
5. 本質的な「検証」:OSコマンドラインからの非対話実行
実際のシステム運用や、シェルスクリプト(Cronジョブなど)による自動バッチ処理にSQLを組み込む際、わざわざ対話モードに手動ログインするのは現実的ではない。
そこで、プロンプトに入らず、Ubuntuのコマンドラインから直接SQLファイルを流し込んで結果を得る方法を検証する。
ターミナル上で、ディレクトリが ~/psql-study にあることを確認し、以下のコマンドを実行する。
■ 技術解説:-f オプションの役割
-f(file)オプションを使用することで、指定したファイルの中身を直接PostgreSQLのエンジンにパイプラインで流し込み、実行結果をそのまま標準出力(stdout)としてターミナルへ戻すことができる。
この非対話コマンドが正常に通れば、「SQLファイルの外部実行プロセス」がUbuntu環境において正しくセットアップできている証明となる。これをベースに、シェルスクリプトでのデータ抽出や定期バックアップタスク等への応用が可能だ。