跳至主要内容

从现有 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
确保您的 PostgreSQL 工具与 Prisma Postgres 版本匹配

Prisma Postgres 运行 PostgreSQL 17。您的 pgloader 和您使用的任何其他 PostgreSQL 工具都需要与 PostgreSQL 17 兼容。

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

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 连接字符串

  1. 导航到您的活跃 Prisma Postgres 实例。
  2. 点击项目侧边导航栏中的 API Keys 选项卡。
  3. 点击 Create API key 按钮。
  4. 在弹出的窗口中,为 API 密钥提供一个 Name,然后点击 Create
  5. 复制以 postgres:// 开头的连接字符串,这是您的直接连接字符串。

保存连接字符串,下一步需要用到它。

2. 准备您的直接连接字符串

在此步骤中,您将使用在步骤 1 中获得的直接连接字符串连接到您的 Prisma Postgres 实例。

您的直接连接字符串应如下所示

postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require

您将在配置 pgloader 的下一步中使用此连接字符串。

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__@db.prisma.io: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。这将创建一个包含 schema.prisma 文件和 .env 文件(如果尚未存在)的 prisma 文件夹。

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

.env
DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"

通过运行以下命令内省您新迁移的数据库

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"
}

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

.env
DATABASE_URL="postgres://USER:PASSWORD@db.prisma.io:5432/?sslmode=require"

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

npx prisma db pull

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

如果您以前使用过 Prisma Migrate

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

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

© . This site is unofficial and not affiliated with Prisma Data, Inc.