PostgresSQLとしてSupabaseの有料プランを利用しているが、主にコストの観点で厳しくなってきた。
今はPostgres上にあるデータをCloudflare D1に移行しようとしており、その過程でPostgres上にあるデータをダンプする pg dump
をしようとしたが、実行で手間取ったのでメモを残す。
コマンド
詳しくはpg_dumpの公式ドキュメントを参照
docker run --rm -it --network host -v $(pwd):/tmp postgres:15 pg_dump \ -h host_name \ -U user_name \ -d db_name \ -p 6543 \ -f /tmp/dump.sql \ --schema=public \ --no-owner \ --inserts
- バージョン互換で躓いたため、最終的に postgresのDockerイメージを利用する形で実行した
- クライアント側で利用しているpgのバージョンとサーバー側のバージョンが合わない場合、
pg_dump: error: aborting because of server version mismatch
となり、エラーになって実行できない - 解消する方法はあるが、正直面倒なのでDockerイメージを使った
- バージョン
15
の部分はクラウド側のPostgresのバージョンに合わせて変更することを想定している
- クライアント側で利用しているpgのバージョンとサーバー側のバージョンが合わない場合、
- オプションについてはお好みで
- SQLiteには
COPY INTO
文がないため、-inserts
オプションをつけてINSERT INTO
文でデータをコピーするようにしている - テーブルの権限を委譲する
ALTER TABLE
文は必要ないため、-no-owner
オプションをつけている
- SQLiteには