なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Neon DB から PlanetScale へ PostgreSQL データベースのデータを移行したい

Neon という Serverless PostgreSQL サービスがあるのですが、 24/365 で起動するアプリケーションでは無料枠では収まらない、かつ、 PlanetScale PostgreSQL の最低プラン (15USD/mo) よりも高く付きそうかつ、 PlanetScale は Tokyo リージョンがあるのでレイテンシー的にもよい、という感じだったので、 PlanetScale へ移行したログです。

まず、 Neon から pg_dump を用いて、データベースをまるごとエクスポートします。 pg_dump が入っていない場合は、 Homebrew などから導入しましょう:

$ brew install postgresql@17
$ which pg_dump
/opt/homebrew/opt/postgresql@17/bin/pg_dump

次に、データベースをエクスポートします。 --no-owner かつ --no-privileges が重要です。付けないと、インポート時にそんなユーザーいないよ、とエラーになります。

$ pg_dump --dbname=neondb --file=~/NeonDB_shilink-2025_12_31_18_20_46-dump.sql --if-exists --clean --username=neondb_owner --host=xxx.us-east-1.aws.neon.tech --port=5432 --no-owner --no-privileges

エクスポートしたら、 PlanetScale へインポートします。こちらは psql コマンドを使います。 データベースは事前に作成しておきましょう。

$ psql --file=~/NeonDB_shilink-2025_12_31_18_20_46-dump.sql --single-transaction --username=pscale_api_xxx.xxx --dbname=shlink --host=xxx.pg.psdb.cloud --port=5432

しばらくすると、インポート完了です。あとは動作確認すれば、移行完了です。お疲れさまでした。

参考: