分享到

簡介

在關係型資料庫中,資料庫架構定義了資料庫及其組成部分(如表、欄位和索引)的結構。提取和匯出這些資訊在許多場景中都很有用,包括備份、遷移到新環境、視覺化資料結構以及在程式碼庫中管理這些結構。

在本簡短指南中,我們將討論如何使用 sqlite3 命令匯出 SQLite 資料庫架構。您可以使用同一命令管理資料庫,也可用於匯出資料庫資料和結構。本指南將重點介紹如何提取資料結構本身。

基本用法

從 SQLite 匯出資料庫架構的基本命令如下所示:

sqlite3 DATABASE_FILE.sqlite '.schema' > schema.sql

這裡,DATABASE_FILE.sqlite 是包含資料和結構的 SQLite 資料庫檔案。'.schema' 元件是告訴 SQLite 匯出資料庫架構而不附帶任何資料的命令。schema.sql 檔案是接收匯出的資料庫結構的目標檔案。

互動式執行

上述命令可以在命令列中執行。您可以在 sqlite3 shell 中互動式地執行相同的過程。

首先,使用 sqlite3 命令開啟 SQLite 資料庫檔案

sqlite DATABASE_FILE.sqlite

接下來,設定輸出,以便命令結果傳送到檔案而不是顯示

.output schema.sql

最後,透過鍵入以下內容輸出架構

.schema

您現在可以選擇將輸出更改回標準輸出,方法是鍵入

.output

在本指南的其餘部分,我們將使用命令列演示其他功能,但請注意,如果需要,您可以使用此方法互動式地複製此操作。

匯出特定資料庫的架構

要僅匯出與特定資料庫相關的架構,您可以使用萬用字元選擇屬於該資料庫的所有元件,語法如下

sqlite3 DATABASE_FILE.sqlite '.schema DATABASE.*' > database_schema.sql

例如,如果您有一個名為 sales.sql 的資料庫檔案,並且只想匯出 VENDORS 資料庫,您可以鍵入

sqlite3 sales.sqlite '.schema VENDORS.*' > vendors_db_schema.sql

匯出特定表

您還可以透過在 .schema 後包含表名來匯出特定表

sqlite3 DATABASE_FILE.sqlite '.schema TABLE' > table_schema.sql

另一種方法是使用萬用字元匹配而不是特定名稱。schema 命令使用 LIKE 模式匹配,這意味著百分號 (%) 用於匹配零個或多個字元,下劃線 (_) 可代表恰好一個字元。

例如,要匯出所有以 inventory 開頭的表,您可以鍵入

sqlite3 DATABASE_FILE.sqlite '.schema inventory%' > inventory_schemas.sql

此語法不允許同時指定多個模式或多個特定表,因此您可能需要執行多個命令來匯出所需的物件,或者轉儲所有內容並手動操作匯出的架構。

在架構轉儲中包含資料庫統計資訊

您可以使用 .fullschema 命令代替 .schema 命令,以包含 SQLite 內部用於決定查詢計劃等的所有統計資訊表。這在嘗試除錯查詢為何以特定方式執行時可能很有用

sqlite3 DATABASE_FILE.sqlite '.fullschema' > schema_with_statistics.sql

請注意,.fullschema 命令不允許您按表名進行過濾。

結論

能夠匯出您的架構,可以將資料庫結構儲存到資料庫外部。這在設定新環境、根據需求演進架構以及視覺化所儲存的資訊結構時非常有用。

關於作者
Justin Ellingwood

賈斯汀·埃林伍德(Justin Ellingwood)

自 2013 年以來,賈斯汀一直撰寫關於資料庫、Linux、基礎設施和開發者工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不必用第三人稱寫作,這對各方來說都是一種解脫。
© . This site is unofficial and not affiliated with Prisma Data, Inc.