はじめに
日付:2026年7月2日(木)/ 19日目
午前はpsqlでのspool操作手順の確認、
午後は初めて一から手順書を作成するという
貴重な経験をした一日。
psqlでのspool操作
Oracleの「spool」機能と同様に、
psqlでもSQLの実行結果をファイルに保存できる。
目的:
DBの照会結果をファイルとして出力し、
作業証跡としてダウンロード後、サーバー上のファイルを削除する。
!(バックスラッシュ+エクスクラメーション)とは
psqlの中でLinuxコマンドを実行するには \! を先頭につける必要がある。
| 状態 | コマンドの使い方 |
|---|---|
| psql接続前(Linuxサーバー上) |
ls・pwd などそのまま使用可能 |
| psql接続後(DBプロンプト内) |
\! ls・\! pwd のように \! が必要 |
作業手順
# 1. BastionサーバーへSSH接続(ブラウザ経由)
# 2. psqlにログイン
PGPASSWORD=$(gcloud auth print-access-token) psql \
"host=[ホスト名] port=[ポート番号] user=[USERNAME] dbname=[DB名] sslmode=require"
# 3. スキーマ設定・安全装置
SET SEARCH_PATH TO [スキーマ名];
\set AUTOCOMMIT off
\echo :AUTOCOMMIT
# 4. 現在のディレクトリ確認
\! pwd
# 5. ファイル一覧確認
\! ls -l
# 6. spool開始(出力先ファイルを指定)
\o [ファイル名].csv
# 7. SELECT文を実行(結果がファイルに書き込まれる)
SELECT ...;
# 8. spool終了
\o
# 9. ファイルが作成されたか確認
\! ls -l
# 10. エラーが出た場合はrollback
rollback;
# 11. ブラウザ右上のダウンロードボタンでファイル取得
# 12. サーバー上のファイルを削除
\! rm -i [ファイル名].csv
# 13. 削除確認
\! ls -l
全体の流れ
ブラウザ(ローカルPC)
│
│ ① SSH接続(クラウド提供のブラウザSSH)
↓
Bastionサーバー(Linux)
│
│ ② psqlコマンドで接続
↓
PostgreSQL DB
│
│ ③ \o コマンド(spool)で結果をファイルに保存
↓
ファイル(.csv)→ ブラウザからダウンロード → サーバー上から削除
一言まとめ:
SSH → psql → spool(\o)の3層構造で
DBの結果をファイルとして取り出す作業。
気づき
Oracleでは「spool」と書くが、
psqlでは \o コマンドで同じことができる。
名前は違うが目的は同じ。
「ツールが違っても概念は同じ」という発見が面白かった。
初めて一から手順書を作成した
午後は、特定のエラーへの対応手順書を
一から作成する作業を担当した。
参考にできる既存の手順書はなく、
いくつかの事例資料だけを頼りに書き上げた。
エラーの概要
| 項目 | 内容 |
|---|---|
| エラー種別 | ファイルダウンロードエラー |
| 原因 | 外部サービス上のファイルが削除されているにもかかわらず、システム側に参照情報が残っている |
| エラーメッセージ | The requested resource does not exist |
作業の流れ
① エラーメールの内容確認(調査票ID・ファイルIDを特定)
↓
② BastionサーバーへSSH接続
↓
③ psqlでDBにログイン
↓
④ 事前クエリ実行(スキーマ設定・AUTOCOMMIT off)
↓
⑤ 対象ファイルの照会(SELECT文でファイル情報を確認)
↓
⑥ psqlからログアウト
↓
⑦ 削除対象ファイルの特定(エラーメールのファイルIDと照合)
↓
⑧ 管理画面からファイルを削除
↓
⑨ 関係者へ通知
DBへの照会(SELECT文)
-- 事前クエリ
set search_path to [スキーマ名];
\set AUTOCOMMIT off
\echo :AUTOCOMMIT
-- 対象ファイルの照会
select
rid, file_name, download_kubun,
upload_date, download_date,
expire_date, entity_file_name, file_id
from
delivery_data
where
rid = [RID];
照会結果の中で download_kubun = 2 のレコードが
外部サービス経由のファイルに該当する。
必要なDB権限
[x] read
[ ] write
[ ] sequence
手順書作成で意識したこと
| ポイント | 内容 |
|---|---|
| 初めて読む人でもわかる | 専門用語には補足を入れる |
| 番号で順序を明確に | 「次に何をするか」が迷わないように |
| DB権限を冒頭に明示 | 作業前に必要な権限がわかるようにする |
| エラー時の対処も記載 | rollbackなど異常系も手順に含める |
感想
spoolという概念自体が初めてで、
さらにpsqlでは \o という別の書き方をすることも新鮮だった。
同じ意味なのに名前が違うというのが
エンジニアの世界らしいと感じた。
午後の手順書作成は、既存の手順書が一切ない状態から
事例資料だけを頼りに書き上げるのは
想像以上に大変だった。
「次の人が迷わないように」を意識しながら
一つひとつの手順を言語化する作業は、
自分自身の理解を深めることにもつながった。
これからレビューを受けて何度も修正することになるだろうが、
「自分が作った手順書がチームの役に立つ」と思うと
とてもやりがいを感じる。
少しずつでもチームに貢献できていることが本当に嬉しい。
明日は会食もあるので、今日も全力で駆け抜けた!