既存のデータベースからデータをインポートする
このガイドでは、既存のPostgreSQLデータベースからPrisma Postgresにデータをインポートするためのステップバイステップの手順を説明します。
このマイグレーションは3つのステップで完了できます
- 新しいPrisma Postgresデータベースを作成します。
pg_dump
を使って既存のデータをエクスポートします。- 以前にエクスポートしたデータを
pg_restore
を使ってPrisma Postgresにインポートします。
3番目のステップでは、`pg_restore`を実行する際に、直接接続を使用してPrisma Postgresデータベースに安全に接続します。
前提条件
- 既存のPostgreSQLデータベースへの接続URL
- Aアカウント
- Node.js 18以上がインストールされていること
- バックアップの作成と復元のためのPostgreSQL CLIツール(
pg_dump
、pg_restore
)
1. 新しいPrisma Postgresデータベースを作成する
新しいPrisma Postgresデータベースを作成するには、以下の手順に従ってください。
- にログインしコンソールを開きます。
- 選択したワークスペースで、New projectボタンをクリックします。
- Nameフィールドにプロジェクト名を入力します(例:hello-ppg)。
- Prisma Postgresセクションで、Get startedボタンをクリックします。
- Regionドロップダウンで、現在地から最も近いリージョンを選択します(例:US East (N. Virginia))。
- Create projectボタンをクリックします。
Prisma Postgresインスタンスが作成されたら、次のステップに進むことができます。
2. 既存のデータベースからデータをエクスポートする
このステップでは、既存のデータベースからデータをエクスポートし、ローカルマシンに.bak
ファイルとして保存します。
既存のデータベースの接続URLを準備してください。これは、次のように構造化されているはずです。
postgresql://USER:PASSWORD@HOST:PORT/DATABASE
適切な接続文字列を特定するためのプロバイダー固有の手順については、以下を展開してください。
Neon
- Connection poolingトグルをオフにして、非プール接続文字列を選択していることを確認してください。
- コマンドが機能するためには、
sslmode
をrequire
に設定し、NeonデータベースのURLに追記する必要があります。 - 接続URLは次のようになります
postgresql://USER:PASSWORD@YOUR-NEON-HOST/DATABASE?sslmode=require
Supabase
- Supavisorセッションモードを使用するデータベース接続URLを使用してください。
- 接続URLは次のようになります
postgres://postgres.apbkobhfnmcqqzqeeqss:[YOUR-PASSWORD]@aws-0-ca-central-1.pooler.supabase.com:5432/postgres
次に、PostgreSQLデータベースのデータをエクスポートするために次のコマンドを実行します(__DATABASE_URL__
プレースホルダーを実際のデータベース接続URLに置き換えてください)。
pg_dump \
-Fc \
-v \
-d __DATABASE_URL__ \
-n public \
-f db_dump.bak
このコマンドで使用されたCLIオプションの簡単な概要は次のとおりです。
-Fc
: バックアップにカスタム形式を使用します(pg_restore
に推奨)-v
:pg_dump
を詳細モードで実行します-d
: データベース接続文字列を指定します-n
: ターゲットのPostgreSQLスキーマを指定します-f
: バックアップファイルの出力名を指定します
このコマンドを実行すると、db_dump.bak
という名前のバックアップファイルが作成され、次のステップでそのファイルを使用してPrisma Postgresデータベースにデータを復元します。
3. Prisma Postgresにデータをインポートする
このセクションでは、TCPトンネルを使用してPrisma Postgresインスタンスに接続し、pg_restore
を介してデータをインポートします。
3.1. @prisma/ppg-tunnel
でPrisma Postgresデータベースに接続する
新しいターミナルを開き、Prisma Postgresデータベース接続URLの環境変数を設定します。
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI..."
トンネルを実行する
npx @prisma/ppg-tunnel --host 127.0.0.1 --port 5432
次のような出力が表示されるはずです
Prisma Postgres auth proxy listening on 127.0.0.1:52604 🚀
Your connection is authenticated using your Prisma Postgres API key.
...
==============================
hostname: 127.0.0.1
port: 52604
username: <anything>
password: <none>
==============================
接続を維持するために、このトンネルプロセスを実行し続けてください!
3.2. pg_restore
でバックアップを復元する
ステップ2で作成したバックアップファイルを使用して、このコマンドを実行し、pg_restore
でPrisma Postgresデータベースにデータを復元します。
PGSSLMODE=disable \
pg_restore \
-h 127.0.0.1 \
-p 5432 \
-v \
-d postgres \
./db_dump.bak \
&& echo "-complete-"
コマンドの実行が完了すると、既存のPostgreSQLデータベースからPrisma Postgresへのデータインポートが正常に完了します🎉
インポートが機能したことを確認するには、Prisma Studioを使用できます。プロジェクトの左側サイドナビにあるStudioタブをクリックして**コンソールで**開くか、このコマンドを実行してローカルでPrisma Studioを起動します。
npx prisma studio
4. アプリケーションコードを更新してPrisma Postgresをクエリする
シナリオA: すでにPrisma ORMを使用している場合
すでにPrisma ORMを使用している場合、必要な作業は次のとおりです。
- Prisma Accelerate拡張機能をプロジェクトに追加する
- データベース接続URLを更新し、Prisma Clientを再生成する
4.A.1. Prisma Accelerate拡張機能を追加する
Prisma Postgresを使用する場合、Prisma Accelerate拡張機能は必須です。現在Prisma ORMでPrisma Accelerateを使用していない場合は、Prisma ORMをPrisma Postgresで動作させるために以下の手順を実行してください。
まず、プロジェクトに@prisma/extension-accelerate
パッケージをインストールします。
npm install @prisma/extension-accelerate
次に、Prisma Clientインスタンスに拡張機能を追加します。
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
4.A.2. データベース接続URLを更新する
データベース接続URLは、schema.prisma
ファイル内のdatasource
ブロックのurl
で設定されます。最も一般的なのは、DATABASE_URL
という環境変数で設定する方法です。
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
次のステップでは、.env
ファイルを使用してDATABASE_URL
環境変数を設定することを前提としています(そうでない場合は、ご希望の方法で環境変数を設定できます)。
.env
を開き、DATABASE_URL
環境変数の値をPrisma Postgres接続URLに合わせて更新します。これは次のようになります。
DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=__API_KEY__"
最後のステップとして、更新された環境変数が有効になり、今後のクエリがPrisma Postgresに送られるようにPrisma Clientを再生成する必要があります。
npx prisma generate --no-engine
これが完了したら、アプリケーションを実行でき、以前と同じように動作するはずです。
シナリオB: まだPrisma ORMを使用していない場合
まだPrisma ORMを使用していない場合は、アプリケーションからPrisma Postgresを使用するために、以下の手順を実行する必要があります。
- プロジェクトにPrisma CLIをインストールする
- データベースをイントロスペクトしてPrismaスキーマを生成する
- Prisma Clientを生成する
- アプリケーションのクエリを更新してPrisma ORMを使用する
このプロセスの詳細なステップバイステップの手順は、このガイドで確認できます: 既存のプロジェクトにPrisma ORMを追加する。