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 语句重新创建它。除了比 EMPTY TABLE 命令快之外,TRUNCATE TABLE还将所有自动递增字段重置为从 1 开始,这通常更可取。

总结

在今天的文章中,我们探讨了几种将表数据重置为开发和测试环境的基准的方法。Navicat 可以帮助我们轻松地创建并执行 .sql 脚本。此外,它的自动运行工具可以安排脚本根据各种时间表运行,以便你可以设置作业,然后让 Navicat 处理其余任务。

Navicat 文章
频道条目
分享
文章归档