既存のMySQLデータベースからデータをインポートする
このガイドでは、既存のMySQLデータベースからPrisma Postgresにデータをインポートするためのステップバイステップの手順を説明します。
この移行は4つのステップで実行できます
- 新しいPrisma Postgresデータベースを作成します。
- ダイレクト接続を使用してPrisma Postgresインスタンスに直接接続します。
- pgloaderを使用してMySQLデータをPrisma Postgresに移行します。
- PrismaプロジェクトをPrisma Postgres用に構成します。
前提条件
- 既存のMySQLデータベースへの接続URL。
- Prismaアカウント。
- Node.js 18+がインストールされていること。
- pgloaderがインストールされていること。
この移行は、別のGit開発ブランチで試すことをお勧めします。
1. 新しいPrisma Postgresデータベースを作成する
新しいPrisma Postgresデータベースを作成するには、以下の手順に従ってください
- Prismaにログインし、コンソールを開きます。
- 任意のワークスペースで、New projectボタンをクリックします。
- Nameフィールドにプロジェクトの名前を入力します(例:hello-ppg)。
- Prisma Postgresセクションで、Get startedボタンをクリックします。
- Regionドロップダウンで、現在の場所から最も近いリージョンを選択します(例:US East (N. Virginia))。
- Create projectボタンをクリックします。
データベースがプロビジョニングされたら、Prisma Postgresのダイレクト接続文字列を見つけます
- アクティブなPrisma Postgresインスタンスに移動します。
- プロジェクトのサイドナビでAPI Keysタブをクリックします。
- Create API keyボタンをクリックします。
- ポップアップで、APIキーのNameを入力し、Createをクリックします。
postgres://
で始まる接続文字列をコピーします。これがダイレクト接続文字列です。
接続文字列を保存します。次のステップで必要になります。
2. Prisma Postgresインスタンスに直接接続する
このステップでは、ダイレクト接続を使用してPrisma Postgresインスタンスに接続します。
ステップ1で取得したPrisma Postgres接続URLが必要です。
prisma+postgres://accelerate.prisma-data.net/?api_key=ey...
3. pgloaderを使用してMySQLデータをPrisma Postgresに移行する
Prisma Postgresインスタンスへのアクティブな接続が確立されたので、pgloaderを使用してMySQLデータベースからPrisma Postgresにデータをエクスポートします。
別のターミナルウィンドウを開き、config.load
ファイルを作成します
touch config.load
お好みのテキストエディタでconfig.load
ファイルを開き、以下の設定をコピー&ペーストします
LOAD DATABASE
FROM mysql://username:password@host:PORT/database_name
INTO postgres://__USER__:__PASSWORD__@postgres.prisma-data.net:5432/?sslmode=require
WITH quote identifiers, -- preserve table/column name case by quoting them
include drop,
create tables,
create indexes,
reset sequences
ALTER SCHEMA 'database_name' RENAME TO 'public';
config.load
ファイルで以下の詳細を必ず更新してください
FROM
URL(MySQLデータベースURL)username
、password
、host
、PORT
、database_name
を実際のMySQLデータベース接続詳細に置き換えます。- SSLが必要な場合は、接続文字列に
useSSL=true
が含まれていることを確認してください。例:mysql://username:password@host:PORT/database_name?useSSL=true
。PlanetScaleを使用する場合、sslaccept=strict
を追加しても機能しないことに注意してください。
INTO
URL(PostgresデータベースURL)- 上記のダイレクト接続文字列で、
__USER__
と__PASSWORD__
のプレースホルダーを置き換えて更新します。
- 上記のダイレクト接続文字列で、
ALTER SCHEMA 'database_name' RENAME TO 'public';
内のdatabase_name
を、MySQL接続文字列内のdatabase_name
と完全に一致するように更新します。
更新された認証情報で設定ファイルを保存したら、同じターミナルウィンドウで次のコマンドを実行します
pgloader config.load
データが正常に移行されたことを確認する、以下のようなログが表示されるはずです
LOG report summary reset
table name errors rows bytes total time
------------------------- --------- --------- --------- --------------
fetch meta data 0 9 2.546s
Create Schemas 0 0 0.325s
Create SQL Types 0 0 0.635s
Create tables 0 6 5.695s
Set Table OIDs 0 3 0.328s
------------------------- --------- --------- --------- --------------
public.post 0 8 0.5 kB 4.255s
public."user" 0 4 0.1 kB 2.775s
public._prisma_migrations 0 1 0.2 kB 4.278s
------------------------- --------- --------- --------- --------------
COPY Threads Completion 0 4 5.095s
Index Build Completion 0 5 9.601s
Create Indexes 0 5 4.116s
Reset Sequences 0 2 4.540s
Primary Keys 0 3 2.917s
Create Foreign Keys 0 1 1.121s
Create Triggers 0 0 0.651s
Install Comments 0 0 0.000s
------------------------- --------- --------- --------- --------------
Total import time ✓ 13 0.8 kB 28.042s
このような出力が表示された場合、データがPrisma Postgresインスタンスに正常にエクスポートされたことを意味します。
Prisma Studioを使用して、移行が成功したかどうかを確認することもできます。
npx prisma studio
4. PrismaプロジェクトをPrisma Postgres用に構成する
データを移行した後、PrismaプロジェクトをPrisma Postgresで動作するようにセットアップする必要があります。手順は、Prisma ORMをすでに使用していたかどうかによって異なります。
以前にPrisma ORMを使用していなかった場合
プロジェクトディレクトリでnpx prisma init
を実行して、プロジェクトにPrismaを初期化します。これにより、prisma
フォルダとschema.prisma
ファイル、および.env
ファイル(存在しない場合)が作成されます。
生成された.env
ファイルで、DATABASE_URL
をステップ1で取得したPrisma Postgres接続文字列に一致するように更新します。
DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=__API_KEY__"
次のコマンドを実行して、新しく移行したデータベースをイントロスペクトします
npx prisma db pull
このコマンドは、移行したテーブルを表すモデルでschema.prisma
ファイルを更新し、Prisma Clientを使用してデータをクエリしたり、Prisma Migrateを使用して将来の変更を管理したりできるようになります。
おめでとうございます!MySQLデータベースをPrisma Postgresに正常に移行し、Prismaプロジェクトを構成しました。これで移行チュートリアルは完了です。
PrismaとPrisma Postgresの入門に関する包括的なガイドについては、PrismaとPrisma Postgresでゼロから始めるを参照してください。
すでにPrisma ORMを使用していた場合
schema.prisma
ファイルで、datasource
ブロックのprovider
をmysql
からpostgresql
に変更します。
datasource db {
provider = "mysql"
provider = "postgres"
url = env("DATABASE_URL")
}
生成された.env
ファイルで、DATABASE_URL
をステップ1で取得した新しいPrisma Postgres接続文字列に一致するように更新します。
DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=__API_KEY__"
新しく移行したPrisma Postgresデータベースをイントロスペクトし、Prisma Clientを生成します
npx prisma db pull
このコマンドは、新しいデータベーススキーマに基づいてPrismaモデルを更新します。
以前にPrisma Migrateを使用していた場合
prisma
ディレクトリ内の既存のmigrations
フォルダを削除します。- 新しいマイグレーションの作成を開始するためにデータベースのベースラインを設定します。
おめでとうございます!MySQLデータベースをPrisma Postgresに正常に移行し、Prismaプロジェクトを構成しました。これで移行チュートリアルは完了です。