Navicat 部落格

重新整理測試資料的指南 2020 年 10 月 30 日,由 Robert Gravelle 撰寫

將資料庫執行個體定期還原為基準資料集是開發和測試環境中的常見做法。例如,每當資料與基準差異太大時,我的辦公室都會定期這樣做。這是必需的,因為開發人員和自動化測試期望資料具有一定數量和質量。實際上覆蓋資料表內容並無所謂正確方法,因此你應根據組織的特定目標和情況作出選擇一個合適的方法。在今天的文章中,我將分享我在 Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它 工作時的做法以及我的標準程序。

工作中的 SQL 指令碼

SQL 指令碼是一個包含一組 SQL命令的檔案,通常以 .sql 副檔名儲存。它可以包含 SQL 陳述式或 PL/SQL 區塊。SQL 指令碼提供了一種組合相關 SQL 功能的簡單方法,以便在需要時重用。所有熱門的關聯式資料庫都可以直接從命令列執行 SQL 指令碼。例如,在 MySQL 中,你可以按以下方式叫用 SQL 指令碼:

shell> mysql --user="username" --database="databasename" --password="yourpassword" < "path to sql file"

建立資料表重新整理指令碼

以我的經驗,建立指令碼以重設資料表資料的最簡單方法是使用公用程式。就像 MySQL,其安裝程序包含 mysqldump 公用程式。它可以建立 SQL 陳述式來截斷資料表並用基準資料重新擴展列。mysqldump 有很多選項,但是真正需要的只是資料庫名稱和 SQL 檔案名稱:

shell> mysqldump db_name > backup-file.sql 

無論使用哪種公用程式,非常重要的是,產生的 SQL 在資料表擴展之前必須包含 DROP TABLE 陳述式。mysqldump 具有 --add-drop-table 選項,而根據預設這個選項是啟用的,因此你無需在正常使用狀況下將其包含在內。

Navicat 資料庫開發和管理用戶端包含一個「傾印 SQL 檔案」命令。與 mysqldump 一樣,它也提供了許多選項,包括是否傾印結構和資料還是僅傾印結構:

dump_sql_file_command (105K)

以下是在 Navicat SQL 編輯器中已產生的範例檔案。如你所見,DROP TABLE IF EXISTS 命令在 CREATE 陳述式之前:

sql_file_contents (217K)

截斷資料表

上面的指令碼是從頭開始重新建立資料表,你也可以截斷(TRUNCATE)資料表,然後使用 INSERT INTO 命令從備份資料表中重新插入資料:

TRUNCATE TABLE dbo.T1; 
INSERT INTO D1.dbo.T1 
SELECT * FROM D2.dbo.T1;

這是 Navicat 中的一個範例:

insert_into_command (47K)

請注意,資料庫在背後仍是刪除資料表並使用 SQL CREATE TABLE 語句重新建立它。TRUNCATE TABLE 除了比 EMPTY TABLE 命令快之外,它還可以將所有自動遞增欄位重設為 1,這通常更可取。

總結

在今天的文章中,我們探索了幾種將資料表資料重設為開發和測試環境的基準的方法。Navicat 可以幫助我們輕鬆地建立並執行 .sql 指令碼。此外,它的自動執行工具可以安排根據各種排程執行指令碼,這樣你就可以設定你的工作,然後讓 Navicat 處理其餘的執行程序。

Navicat 文章
頻道記錄
分享
部落格封存檔