跳到主內容

從現有資料庫匯入資料

本指南提供了將資料從現有 PostgreSQL 資料庫匯入到 Prisma Postgres 的分步說明。

您可以透過三個步驟完成此遷移

  1. 建立一個新的 Prisma Postgres 資料庫。
  2. 透過 pg_dump 匯出您的現有資料。
  3. 透過 pg_restore 將之前匯出的資料匯入到 Prisma Postgres。

在第三步中,您將使用直接連線在執行 pg_restore 期間安全地連線到您的 Prisma Postgres 資料庫。

先決條件

  • 現有 PostgreSQL 資料庫的連線 URL
  • 一個賬戶
  • 已安裝 Node.js 18+
  • PostgreSQL CLI 工具(pg_dumppg_restore),用於建立和恢復備份

1. 建立一個新的 Prisma Postgres 資料庫

按照以下步驟建立一個新的 Prisma Postgres 資料庫

  1. 登入到並開啟控制檯。
  2. 在您選擇的工作區中,點選新建專案按鈕。
  3. 名稱欄位中輸入您的專案名稱,例如hello-ppg
  4. Prisma Postgres部分,點選開始使用按鈕。
  5. 區域下拉選單中,選擇離您當前位置最近的區域,例如美國東部(北弗吉尼亞)
  6. 點選建立專案按鈕。

您的 Prisma Postgres 例項建立完成後,您可以進入下一步。

2. 從現有資料庫匯出資料

在此步驟中,您將從現有資料庫匯出資料,並將其儲存在本地計算機上的 .bak 檔案中。

確保您已準備好現有資料庫的連線 URL,其結構應如下所示

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

展開下方以檢視提供商特定的說明,幫助您確定正確的連線字串

Neon

  • 確保透過關閉連線池開關來選擇非池化連線字串。
  • 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 schema
  • -f: 指定備份檔案的輸出名稱

執行此命令將建立一個名為 db_dump.bak 的備份檔案,您將在下一步中使用它將資料恢復到您的 Prisma Postgres 資料庫中。

3. 將資料匯入 Prisma Postgres

在本節中,您將使用TCP 隧道連線到您的 Prisma Postgres 例項,並透過 `pg_restore` 匯入資料。

3.1. 使用 @prisma/ppg-tunnel 連線到 Prisma Postgres 資料庫

開啟一個新終端並設定您的 Prisma Postgres 資料庫連線 URL 的環境變數。

export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI..."

執行隧道

npx @prisma/ppg-tunnel --host 127.0.0.1 --port 5432

您應該看到類似於以下內容的輸出

Prisma Postgres auth proxy listening on 127.0.0.1:52604 🚀

Your connection is authenticated using your Prisma Postgres API key.
...

==============================
hostname: 127.0.0.1
port: 52604
username: <anything>
password: <none>
==============================
注意

保持此隧道程序執行以維持連線!

3.2. 使用 pg_restore 恢復備份

使用第 2 步中的備份檔案,透過執行此命令,使用 pg_restore 將資料恢復到 Prisma Postgres 資料庫中

PGSSLMODE=disable \
pg_restore \
-h 127.0.0.1 \
-p 5432 \
-v \
-d postgres \
./db_dump.bak \
&& echo "-complete-"

命令執行完成後,您將成功地將資料從現有 PostgreSQL 資料庫匯入到 Prisma Postgres 🎉

要驗證匯入是否成功,您可以使用Prisma Studio您可以在您的專案中點選左側導航欄中的Studio選項卡開啟它,或者執行此命令在本地啟動 Prisma Studio

npx prisma studio

4. 更新您的應用程式程式碼以查詢 Prisma Postgres

場景 A:您已在使用 Prisma ORM

如果您已經在使用 Prisma ORM,您只需執行以下操作:

  • 將 Prisma Accelerate 擴充套件新增到您的專案
  • 更新資料庫連線 URL 並重新生成 Prisma Client

4.A.1. 新增 Prisma Accelerate 擴充套件

使用 Prisma Postgres 時,Prisma Accelerate 擴充套件是必需的。如果您目前尚未將 Prisma Accelerate 與 Prisma ORM 結合使用,請按照以下步驟使 Prisma ORM 與 Prisma Postgres 協同工作。

首先,在您的專案中安裝 `@prisma/extension-accelerate` 包

npm install @prisma/extension-accelerate

然後,將此擴充套件新增到您的 Prisma Client 例項中

import { withAccelerate } from '@prisma/extension-accelerate'

const prisma = new PrismaClient().$extends(withAccelerate())

4.A.2. 更新資料庫連線 URL

資料庫連線 URL 是透過 `schema.prisma` 檔案中 `datasource` 塊的 `url` 配置的。通常,它透過一個名為 `DATABASE_URL` 的環境變數設定

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

接下來的步驟假設您使用 `.env` 檔案來設定 `DATABASE_URL` 環境變數(如果不是這種情況,您可以按您偏好的方式設定環境變數)。

開啟 `.env` 檔案並更新 `DATABASE_URL` 環境變數的值,使其與您的 Prisma Postgres 連線 URL 匹配,類似於這樣

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

最後一步,您需要重新生成 Prisma Client,以便更新的環境變數生效,並且您的查詢將指向 Prisma Postgres

npx prisma generate --no-engine

完成後,您可以執行您的應用程式,它應該像以前一樣工作。

場景 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.