簡介
在關聯式資料庫中,資料庫結構描述定義了資料庫的結構及其組成部分,例如表格、欄位和索引。擷取和匯出此資訊在許多情境中都很有用,包括備份、遷移到新環境、視覺化資料結構,以及在程式碼庫中管理這些結構。
在本簡短指南中,我們將討論如何使用 sqlite3
命令匯出 SQLite 資料庫結構描述。您可以用來管理資料庫的相同命令,也可以用來匯出資料庫資料和結構。在本指南中,我們將重點放在擷取資料結構本身。
您可以使用 Prisma Client 從您的 JavaScript 或 TypeScript 應用程式中管理 PostgreSQL 資料庫。若要了解如何搭配 SQLite 使用 Prisma,請查看 Prisma 的 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
命令不允許您依表格名稱篩選。
結論
能夠匯出您的結構描述讓您可以將資料庫結構儲存在資料庫本身之外。這對於設定新環境、隨著需求變化發展您的結構描述,以及視覺化您正在儲存的資訊結構很有幫助。
您可以使用 Prisma Client 從您的 JavaScript 或 TypeScript 應用程式中管理 PostgreSQL 資料庫。若要了解如何搭配 SQLite 使用 Prisma,請查看 Prisma 的 SQLite 資料庫連接器頁面。