跳至主要内容

从现有 PostgreSQL 数据库导入数据

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

您可以通过三个步骤完成此迁移

  1. 创建一个新的 Prisma Postgres 数据库。
  2. 通过 pg_dump 导出您现有的数据。
  3. 通过 pg_restore 将之前导出的数据导入到 Prisma Postgres。

在第三步中,您将使用直连安全连接到您的 Prisma Postgres 数据库以运行 pg_restore

先决条件

  • 您现有 PostgreSQL 数据库的连接 URL
  • 一、帐户
  • 已安装 Node.js 18+
  • 用于创建和恢复备份的 PostgreSQL CLI 工具(pg_dumppg_restore
请确保您的 PostgreSQL 工具与 Prisma Postgres 版本匹配

Prisma Postgres 运行 PostgreSQL 17。您的 pg_dumppg_restore 工具需要是版本 17 才能确保兼容性。您可以通过运行 pg_dump --versionpg_restore --version 来检查您的版本。

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 按钮。

数据库配置完成后,获取您的直连字符串

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

保存连接字符串,您将在第 3 步中用到它。

2. 从现有数据库导出数据

在此步骤中,您将从现有数据库导出数据并将其存储在本地计算机上的 .bak 文件中。

请确保您已准备好现有数据库的连接 URL,它应该像这样结构化

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

展开下方以获取特定于提供商的说明,帮助您确定正确的连接字符串

Neon

  • 请确保通过关闭 Connection pooling 切换来选择非池化连接字符串。
  • sslmode 必须设置为 require 并附加到您的 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

在本节中,您将使用您的直连字符串连接到您的 Prisma Postgres 实例,并通过 pg_restore 导入数据。

您从第 1 步获得的直连字符串应该像这样

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

使用 第 2 步 中的备份文件,通过运行此命令(将 __USER____PASSWORD__ 替换为您的直连字符串中的值),使用 pg_restore 将数据恢复到您的 Prisma Postgres 数据库中

pg_restore \
-h db.prisma.io \
-p 5432 \
-U __USER__ \
-d postgres \
-v \
./db_dump.bak \
&& echo "-complete-"

当提示时,输入您的直连字符串中的 __PASSWORD__

提示

您还可以使用完整的连接字符串格式

pg_restore \
-d "postgres://USER:PASSWORD@db.prisma.io:5432/postgres?sslmode=require" \
-v \
./db_dump.bak \
&& echo "-complete-"

命令执行完成后,您将成功地将数据从现有 PostgreSQL 数据库导入到 Prisma Postgres 🎉

要验证导入是否成功,您可以使用 Prisma Studio。您可以在以下位置打开它通过点击项目左侧导航栏中的 Studio 选项卡,或运行此命令在本地启动 Prisma Studio

npx prisma studio

4. 更新您的应用程序代码以查询 Prisma Postgres

场景 A:您已经在使用 Prisma ORM

如果您已经在使用 Prisma ORM,您需要更新您的数据库连接 URL 以指向您的新 Prisma Postgres 实例。

更新您的 .env 文件中的 DATABASE_URL 以匹配您在第 1 步中获得的 Prisma Postgres 直连字符串

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

然后,重新生成 Prisma Client,以便更新的环境变量生效

npx prisma generate

完成此操作后,您可以运行您的应用程序,它应该像以前一样工作。

提示

有关从头开始设置 Prisma ORM 与 Prisma Postgres 的完整指南,包括驱动程序适配器配置和最佳实践,请参阅Prisma ORM 与 Prisma Postgres 快速入门

场景 B:您尚未使用 Prisma ORM

如果您尚未使用 Prisma ORM,您需要完成以下步骤才能从您的应用程序中使用 Prisma Postgres

  1. 在您的项目中安装 Prisma CLI 和其他所需的依赖项
  2. 内省数据库以生成 Prisma schema
  3. 生成 Prisma Client
  4. 更新应用程序中的查询以使用 Prisma ORM

您可以在本指南中找到此过程的详细分步说明:将 Prisma ORM 添加到现有项目

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