psqlからClaude Codeを呼び出す

psqlのpagerをteeにしておけば直前のクエリの結果がファイルに記録されるので、それをClaude Codeに食わせられるな…ということでやってみた。

$ psql -h localhost -U postgres

postgres=# \setenv PSQL_PAGER 'tee query.log';
postgres=# \pset pager always

postgres=# explain analyze WITH partition AS (
  SELECT
    i.inhrelid,
    c.relname
  FROM
    pg_catalog.pg_inherits i
    JOIN pg_catalog.pg_class c ON c.oid = i.inhparent
)
SELECT
  c.relname,
  p.relname AS partition_of
FROM
  pg_catalog.pg_class c
  JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
  LEFT JOIN LATERAL (
    SELECT relname FROM partition WHERE inhrelid = c.oid LIMIT 1
  ) AS p ON true
WHERE n.nspname = 'public'
;

postgres=# \! claude "query.logのQUERY PLANを分析して"