從現有 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 檔案中的以下詳細資訊
FROMURL(MySQL 資料庫 URL)- 將
username、password、host、PORT和database_name替換為您 MySQL 資料庫的實際連線詳細資訊。 - 如果需要 SSL,請確保您的連線字串包含
useSSL=true,例如:mysql://username:password@host:PORT/database_name?useSSL=true。請注意,當使用 PlanetScale 時,追加sslaccept=strict將不起作用。
- 將
INTOURL(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 專案。您的遷移教程現已完成。