从现有 MySQL 数据库导入数据
本指南提供了将数据从现有 MySQL 数据库导入到 Prisma Postgres 的分步说明。
您可以分四步完成此迁移
- 创建一个新的 Prisma Postgres 数据库。
- 使用直接连接直接连接到 Prisma Postgres 实例。
- 使用 pgloader 将 MySQL 数据迁移到 Prisma Postgres。
- 为 Prisma Postgres 配置您的 Prisma 项目。
先决条件
- 现有 MySQL 数据库的连接 URL。
- 一个帐户。
- 已安装 Node.js 18+。
- 已安装 pgloader。
我们建议在一个单独的 git 开发分支中尝试此迁移。
1. 创建一个新的 Prisma Postgres 数据库
按照以下步骤创建一个新的 Prisma Postgres 数据库
- 登录到并打开控制台。
- 在您选择的工作区中,点击新建项目按钮。
- 在名称字段中输入项目名称,例如 hello-ppg。
- 在 Prisma Postgres 部分,点击开始按钮。
- 在区域下拉菜单中,选择离您当前位置最近的区域,例如 US East (N. Virginia)。
- 点击创建项目按钮。
数据库配置完成后,找到您的直接 Prisma Postgres 连接字符串
- 导航到您的活动 Prisma Postgres 实例。
- 点击项目侧边导航中的API 密钥选项卡。
- 点击创建 API 密钥按钮。
- 在弹出窗口中,为 API 密钥提供一个名称,然后点击创建。
- 复制以
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 Postgres 配置您的 Prisma 项目
迁移数据后,您需要设置您的 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 项目。您的迁移教程现已完成。