跳到主要内容

从现有 MySQL 数据库导入数据

本指南提供了将数据从现有 MySQL 数据库导入到 Prisma Postgres 的分步说明。

您可以分四步完成此迁移

  1. 创建一个新的 Prisma Postgres 数据库。
  2. 使用直接连接直接连接到 Prisma Postgres 实例。
  3. 使用 pgloader 将 MySQL 数据迁移到 Prisma Postgres。
  4. 为 Prisma Postgres 配置您的 Prisma 项目。

先决条件

  • 现有 MySQL 数据库的连接 URL。
  • 一个帐户。
  • 已安装 Node.js 18+。
  • 已安装 pgloader

我们建议在一个单独的 git 开发分支中尝试此迁移。

1. 创建一个新的 Prisma Postgres 数据库

按照以下步骤创建一个新的 Prisma Postgres 数据库

  1. 登录到并打开控制台。
  2. 在您选择的工作区中,点击新建项目按钮。
  3. 名称字段中输入项目名称,例如 hello-ppg
  4. Prisma Postgres 部分,点击开始按钮。
  5. 区域下拉菜单中,选择离您当前位置最近的区域,例如 US East (N. Virginia)
  6. 点击创建项目按钮。

数据库配置完成后,找到您的直接 Prisma Postgres 连接字符串

  1. 导航到您的活动 Prisma Postgres 实例。
  2. 点击项目侧边导航中的API 密钥选项卡。
  3. 点击创建 API 密钥按钮。
  4. 在弹出窗口中,为 API 密钥提供一个名称,然后点击创建
  5. 复制以 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 文件并复制粘贴以下配置

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)
    • usernamepasswordhostPORTdatabase_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 Postgres 配置您的 Prisma 项目

迁移数据后,您需要设置您的 Prisma 项目以与 Prisma Postgres 配合使用。步骤因您是否已经使用 Prisma ORM 而异。

如果您之前没有使用 Prisma ORM

在您的项目目录中运行 npx prisma init 以初始化 Prisma。这会创建一个 prisma 文件夹,其中包含 schema.prisma 文件和 .env 文件(如果尚未存在)。

在生成的 .env 文件中,更新 DATABASE_URL 以匹配您在步骤 1 中收到的 Prisma Postgres 连接字符串

.env
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 块中的 providermysql 更改为 postgresql

schema.prisma
datasource db {
provider = "mysql"
provider = "postgres"
url = env("DATABASE_URL")
}

在生成的 .env 文件中,更新 DATABASE_URL 以匹配您在步骤 1 中收到的新 Prisma Postgres 连接字符串

.env
DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=__API_KEY__"

内省您新迁移的 Prisma Postgres 数据库并生成 Prisma Client

npx prisma db pull

此命令根据新的数据库模式刷新您的 Prisma 模型。

如果您之前使用 Prisma Migrate

恭喜!您已成功将 MySQL 数据库迁移到 Prisma Postgres 并配置了您的 Prisma 项目。您的迁移教程现已完成。

如果您在迁移过程中遇到任何问题,请随时通过 Discord 或通过 X 联系我们。

© . All rights reserved.