メインコンテンツへスキップ

既存のデータベースからデータをインポートする

このガイドでは、既存のPostgreSQLデータベースからPrisma Postgresにデータをインポートするためのステップバイステップの手順を説明します。

このマイグレーションは3つのステップで完了できます

  1. 新しいPrisma Postgresデータベースを作成します。
  2. pg_dumpを使って既存のデータをエクスポートします。
  3. 以前にエクスポートしたデータをpg_restoreを使ってPrisma Postgresにインポートします。

3番目のステップでは、`pg_restore`を実行する際に、直接接続を使用してPrisma Postgresデータベースに安全に接続します。

前提条件

  • 既存のPostgreSQLデータベースへの接続URL
  • Aアカウント
  • Node.js 18以上がインストールされていること
  • バックアップの作成と復元のためのPostgreSQL CLIツール(pg_dumppg_restore

1. 新しいPrisma Postgresデータベースを作成する

新しいPrisma Postgresデータベースを作成するには、以下の手順に従ってください。

  1. にログインしコンソールを開きます。
  2. 選択したワークスペースで、New projectボタンをクリックします。
  3. Nameフィールドにプロジェクト名を入力します(例:hello-ppg)。
  4. Prisma Postgresセクションで、Get startedボタンをクリックします。
  5. Regionドロップダウンで、現在地から最も近いリージョンを選択します(例:US East (N. Virginia))。
  6. Create projectボタンをクリックします。

Prisma Postgresインスタンスが作成されたら、次のステップに進むことができます。

2. 既存のデータベースからデータをエクスポートする

このステップでは、既存のデータベースからデータをエクスポートし、ローカルマシンに.bakファイルとして保存します。

既存のデータベースの接続URLを準備してください。これは、次のように構造化されているはずです。

postgresql://USER:PASSWORD@HOST:PORT/DATABASE

適切な接続文字列を特定するためのプロバイダー固有の手順については、以下を展開してください。

Neon

  • Connection poolingトグルをオフにして、非プール接続文字列を選択していることを確認してください。
  • コマンドが機能するためには、sslmoderequireに設定し、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という環境変数で設定する方法です。

schema.prisma
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を使用するために、以下の手順を実行する必要があります。

  1. プロジェクトにPrisma CLIをインストールする
  2. データベースをイントロスペクトしてPrismaスキーマを生成する
  3. Prisma Clientを生成する
  4. アプリケーションのクエリを更新してPrisma ORMを使用する

このプロセスの詳細なステップバイステップの手順は、このガイドで確認できます: 既存のプロジェクトにPrisma ORMを追加する

© . All rights reserved.