跳到主要內容

從現有 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 聯絡我們。

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