簡介
在關聯式資料庫中,資料庫結構描述定義了資料庫的結構及其組成部分,例如表格、欄位和索引。提取和匯出此資訊在許多情境中都很有用,包括備份、遷移到新環境、視覺化資料結構以及在程式碼庫中管理這些結構。
在本簡短指南中,我們將討論如何使用 pg_dump
命令匯出 PostgreSQL 資料庫結構描述。雖然此公用程式可以從 PostgreSQL 匯出多種類型的資料,但在本指南中,我們將重點放在提取資料結構本身。
您可以使用 Prisma Client 從您的 JavaScript 或 TypeScript 應用程式內管理 PostgreSQL 資料庫。了解如何將 Prisma 新增到現有專案,或如何從頭開始使用 Prisma。
基本用法
從 PostgreSQL 匯出資料庫結構描述所需的基本命令如下
pg_dump --schema-only DATABASE > schema.sql
根據您的 PostgreSQL 設定,您可能還需要包含以下一些選項
--username=
/-U
:您要用於驗證的資料庫使用者名稱--password
/-W
:強制pg_dump
提示輸入密碼以進行驗證--host=
/-h
:PostgreSQL 所在的主機名稱或 IP 位址--port=
/-p
:PostgreSQL 正在監聽的連接埠號碼
負責告知 pg_dump
僅包含資料庫結構,而不包含資料本身的選項是 --schema-only
--schema-only
:-s
:僅匯出物件定義,而不匯出資料本身。
此外,第一個非選項引數(在此處以「DATABASE」一詞表示)指示要匯出的確切資料庫。
使用此資訊,您可以使用類似以下的命令,使用名為 sales_reporter
的受限使用者匯出名為 SALES
的資料庫結構描述
pg_dump --username=sales_reporter --password --schema-only SALES > sales_database_schema.sql
修改匯出行為
上面討論的基本用法將輸出與所討論資料庫相關的每個結構。我們可以透過許多其他選項來修改此行為,在某些情況下,可以使用相關的 pg_dumpall
命令。
目標多個資料庫
pg_dump
命令旨在匯出與單一資料庫相關的資訊。若要一次目標多個資料庫,您可以改為替換為 pg_dumpall
命令,其遵循類似的語法。
若要傾印 PostgreSQL 叢集中的所有資料庫結構描述,請輸入
pg_dumpall --schema-only > all_schemas.sql
如果您想要限制傾印的資料庫,您可以選擇性地包含 --exclude-database=
選項。這可以多次使用以目標個別資料庫
pg_dumpall --schema-only --exclude-database=FIRST --exclude-database=SECOND > almost_all_schemas.sql
它也可以使用萬用字元樣式比對,以使用單一模式捕獲多個資料庫
pg_dumpall --schema-only --exclude-database='SALES_*' > all_schemas_except_sales.sql
僅匯出特定結構
您也可以透過命名要匯出的特定表格來減少匯出的結構
--table=
/-t
:僅傾印符合給定模式的表格。可以多次提供。--exclude-table=
/-T
:排除符合給定模式的表格。可以多次提供。
例如,如果您的 SALES
資料庫中的三個表格分別名為 EMPLOYEE
、STORE
和 INVENTORY
,全部在預設 public
結構描述中定義,您可以僅透過輸入以下內容來匯出這些結構
pg_dump --schema-only --table='public."EMPLOYEE"' --table='public."STORE"' --table='public."INVENTORY"' SALES > some_sales_tables.sql
注意:您可以在我們關於如何在 PostgreSQL 中使用單引號和雙引號的指南中,找到更多關於 PostgreSQL 如何解釋不同類型引號的資訊。
如果您想要所有銷售資料,除了這三個表格之外,您可以改為使用
pg_dump --schema-only --exclude-table='public."EMPLOYEE"' --exclude-table='public."STORE"' --exclude-table='public."INVENTORY"' SALES > some_sales_tables.sql
其他相關選項
根據您的目標,一些可能有用的其他選項包括
--create
/-C
:包含在傾印其包含的結構之前建立資料庫本身的命令。--clean
/-c
:輸出命令以在建立資料庫物件之前先刪除它們。--if-exists
:僅在使用--clean
時相關,將導致pg_dump
僅嘗試刪除資料庫中已存在的資料庫物件。
例如,如果您想要在結構描述匯出中包含建立資料庫本身的命令,您可以輸入
pg_dump --schema-only --create SALES > sales_db_schema.sql
若要在建立 SALES
資料庫中的任何資料庫物件之前先刪除它們,您可以改為使用
pg_dump --schema-only --clean --if-exists SALES > sales_db_schema.sql
結論
能夠匯出您的結構描述可讓您將資料庫結構儲存在資料庫本身之外。這在設定新環境、隨著需求變化演進結構描述以及視覺化您正在儲存的資訊結構時很有幫助。
您可以使用 Prisma Client 從您的 JavaScript 或 TypeScript 應用程式內管理 PostgreSQL 資料庫。了解如何將 Prisma 新增到現有專案,或如何從頭開始使用 Prisma。