如何借助数据库管理工具自动测试数据恢复过程
suiw9 2024-11-26 08:38 17 浏览 0 评论
当基于复杂的数据库结构开发软件应用程序时,通常有必要在相同的输入数据上运行各种业务逻辑测试方案。这就是重复恢复测试数据的问题所在。本文提供了一种最简单方法工具仅使用dbForge Studio for MySQL自动化该过程 。
测试数据恢复是一个耗时且费力的过程,通常是手动完成的。因此,其自动化对于确保快速,可靠和具有成本效益的交付至关重要。但是,在开始详细介绍如何借助dbForge Studio for MySQL自动化测试数据恢复过程之前,让我们首先了解一些术语。
慧都现推出“软件国产化服务季”JAVA、数据库开发控件应有尽有!点击文末“了解更多”即刻拥有!
什么是DevOps?
DevOps是一个相当新且迅速传播的概念,它描述了一组旨在使软件开发和交付流程自动化的实践,以便开发和IT团队可以缩短整个服务生命周期并提供持续交付的高质量软件。
为什么选择DevOps用于数据库?
数据库更改是执行应用程序部署时延迟的主要原因。因此,旨在提高数据库变更交付速度的数据库开发自动化导致迭代次数缩短,并且无疑对软件应用程序的持续交付产生积极影响。
如何使用dbForge Studio for MySQL自动执行测试数据恢复
背景:
假设我们的数据库源代码位于远程存储库上,并且它的测试数据必须从其他来源(例如脚本文件夹,另一个数据库或文件)生成或获取。
先决条件:
- 已安装的dbForge Studio for MySQL
- 先前使用dbForge Studio for MySQL配置的必需模板文件(.scomp,.dcomp,.dit和/或.dgen)。
步骤1.克隆存储库
假设在远程Git存储库中有一个脚本文件夹,我们需要将其用作创建数据库的数据源。首先,我们需要将此远程存储库克隆到本地文件夹。在这个工作示例中,我们将存储库克隆到D:\ Temp \ DevOps_MySQL \。以下是此操作的CMD命令:
git clone https://github.com/repository-name/sakila.git D:\Temp\DevOps_MySQL
其中:
repository-name
要克隆的存储库的名称
sakila
包含要使用的测试数据的数据库的名称
注意:
在运行上述命令之前,请确保您的计算机上已安装Git for Windows客户端。
步骤2.在服务器上创建或重新创建数据库
在服务器上部署数据库之前,需要创建或重新创建数据库(删除旧数据库,然后创建新数据库)。这可以通过数据库创建脚本,CMD和dbForge Studio for MySQL轻松完成。我们不会在本文中强调这一点,因为这些操作非常基础。
要在服务器上创建sakila数据库,我们将使用以下命令行脚本:
dbforgemysql.com /execute /connection:"User Id=%user-name%;password=%your-password%;Host=%your-host%" /inputfile "D:\Temp\DevOps_MySQL\Create_sakila2.sql"
请注意,您需要输入自己的凭据才能使此脚本正常工作。
对于喜欢PowerShell操作环境的用户,我们还提供PS脚本:
.\dbforgemysql.com /execute /connection:"User Id=%user-name%;password=%your-password%;Host=%your-host%" /inputfile "D:\Temp\DevOps_MySQL\Create_Sakila2.sql" if ($? -eq $true) { Write-host "Database sakila2 created" -ForegroundColor Cyan } else { Write-host "Error" -ForegroundColor Yellow }
同样,不要忘记将自己的凭据添加到脚本中。
步骤3.在本地和远程数据库之间同步架构
下面是CMD和PS脚本,用于将空的本地sakila2数据库的模式与远程sakila数据库同步。同步的结果是,将创建在配置模板时选择的所有表,视图,过程,函数和触发器。
CMD
dbforgemysql.com /schemacompare /compfile:"D:\Temp\DevOps_MySQL\sakila vs sakila2.scomp" /sync @echo %ERRORLEVEL%
PS
.\dbforgemysql.com /schemacompare /compfile:"D:\Temp\DevOps_MySQL\sakila vs sakila2.scomp" /sync if ($? -eq $true) { Write-host "Objects for sakila2 created" -ForegroundColor Cyan } else { Write-host "Error" -ForegroundColor Yellow }
注意:
提供的脚本表示您先前已配置并保存了模式比较模板文件(.scomp)以同步指定的数据库。请不要忘记使用dbForge Studio for MySQL的“模式比较”功能来准备有问题的文件。
步骤4.用数据填充数据库
在上一步中,我们恢复了数据库结构。现在我们需要的是用测试数据填充数据库。dbForge Studio for MySQL可以拥有三种不同的工具,可用于用数据填充数据库。由于这三个都可以从命令行调用,因此可以在数据库自动化过程中使用,因此我们将分别考虑它们。
使用数据比较功能填充数据库
您可以使用dbForge Studio for MySQL内置的高级“Date Comparison”功能轻松地还原位于脚本文件夹或另一个数据库中的参考数据。使用以下脚本将数据插入country表:
CMD
dbforgemysql.com /datacompare /compfile:"D:\Temp\DevOps_MySQL\country.dcomp" /sync @echo %ERRORLEVEL%
PS
.\dbforgemysql.com /datacompare /compfile:"D:\Temp\DevOps_MySQL\country.dcomp" /sync if ($? -eq $true) { Write-host "Data inserted in sakila2" -ForegroundColor Cyan } else { Write-host "Error" -ForegroundColor Yellow }
注意:
上面提供的脚本表示您先前已经配置并保存了数据比较模板文件(.dcomp)以同步指定数据库中的数据。请不要忘记在运行脚本之前准备有问题的文件。
使用数据导入/导出功能填充数据库
如果参考数据不是存储在数据库本身中,而是存储在单独的文件中,则“数据导入”是用数据填充数据库的最佳选择。dbForge Studio for MySQL提供了一种简单有效的方法,即使用尖端的Data Import/Export functionality将这些数据直接导入所需的表中。
使用以下脚本将数据插入地址表:
CMD
dbforgemysql.com /dataimport /templatefile:"D:\Temp\DevOps_MySQL\address.dit" @echo %ERRORLEVEL%
PS
.\dbforgemysql.com /dataimport /templatefile:"D:\Temp\DevOps_MySQL\address.dit" if ($? -eq $true) { Write-host "Data inserted in sakila2" -ForegroundColor Cyan } else { Write-host "Error" -ForegroundColor Yellow }
注意:
上面提供的脚本表示您先前已经配置并保存了数据导入模板文件(.dit),以便将数据导入指定的表中。请不要忘记在运行脚本之前准备有问题的文件。
使用数据生成器功能填充数据库
dbForge Studio for MySQL具有生成数据的强大功能。它最适合需要在数据库中填充大量实际数据,但又不能或不希望将大量数据存储在磁盘上的情况。同样,在这种情况下,预先配置了数据生成器模板文件(.dgen),您可以使用以下脚本将数据插入actor表:
CMD
dbforgemysql.com /generatedata /projectfile:"D:\Temp\DevOps_MySQL\actor.dgen" @echo %ERRORLEVEL%
PS
.\dbforgemysql.com /generatedata /projectfile:"D:\Temp\DevOps_MySQL\actor.dgen" if ($? -eq $true) { Write-host "Data inserted in sakila2" -ForegroundColor Cyan } else { Write-host "Error" -ForegroundColor Yellow }
注意:
在运行上面提供的脚本之前,配置和保存数据生成器模板文件(.dgen)非常重要。
本文中提供的所有脚本均返回退出状态。结果,如果您编译这三个脚本-用于还原数据库结构,同步数据库模式和填充数据库,则将获得一个MySQL数据库自动化脚本,用于还原测试数据,从而可以监视和控制执行阶段。
结论
dbForge Studio for MySQL是功能丰富的IDE,使您可以轻松地将DevOps方法扩展到MySQL和MariaDB数据库的开发和部署。下载dbForge Studio For MySQL,让您的应用开发冲出国际。
慧都现推出“软件国产化服务季”点击下方“了解更多”查看详情!
相关推荐
- 10款超实用JavaScript音频库(js播放音频代码)
-
HTML5提供了一种新的音频标签实现和规范用一个简单的HTML对象而无需音频插件来控制音频。这只是一个简单的整合这些新的HTML5音频特征及使用JavaScript来创建各种播放控制。下面将介绍10款...
- PROFINET转Modbus网关——工业协议融合的智能枢纽
-
三格电子SG-PNh750-MOD-221,无缝连接Profinet与Modbus,赋能工业物联产品概述...
- 简单实用的Modbus类库,支持从站和DTU
-
一、简介...
- [西门子PLC] S7-200 SMART PROFINET :通过GSD组态PLC设备
-
从S7-200SMARTV2.5版本开始,S7-200SMART开始支持做PROFINETIO通信的智能设备。从而,两个S7-200SMART之间可以进行PROFINETI...
- Modbus(RTU / TCP)有什么异同(modbus tcp和tcp)
-
Modbus是一种广泛使用的工业自动化通信协议,它支持设备之间的数据交换。Modbus协议有两个主要的变体:ModbusRTU(二进制模式)和ModbusTCP(基于TCP/IP网络的模式)。尽管...
- Modbus通信调试步骤详解(modbus调试工具怎么用)
-
Modbus通信调试步骤详解 Modbus通信分为串口和以太网,无论是串口还是以太网,只要是标准Modbus,就可以用Modbus模拟器进行调试。按以下几步进行调试。...
- 理解Intel手册汇编指令(intel 汇编指令手册)
-
指令格式...
- 「西门子PLC」S7-200 SMART的Modbus RTU通讯
-
S7-200SMART集成的RS485端口(端口0)以及SBCM01RS485/232信号板(端口1)两个通信端口可以同时做MODBUSRTU主站,或者一个做MODBUSRTU主站一个做MO...
- InfiniBand网络运维全指南:从驱动安装到故障排查
-
一、InfiniBand网络概述InfiniBand(直译为“无限带宽”技术,缩写为IB)是一种用于高性能计算的计算机网络通信标准,具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。它...
- 一加回归 OPPO,背后的秘密不可告人
-
有这样一个手机品牌,它诞生于互联网品牌。在大众群体看来,它的身世似乎模糊不清,许多人以为它是国外品牌。它的产品定位是极客群体,深受国内发烧友,甚至国外极客玩家喜爱。...
- [西门子PLC] S7-200SMART快速高效的完成Modbus通信程序的设计
-
一、导读Modbus通信是一种被广泛应用的通信协议,在变频器、智能仪表还有其他一些智能设备上都能见到它的身影。本文呢,就把S7-200SMART系列PLC当作Modbus主站,把...
- 狂肝10个月手搓GPU,他们在我的世界中玩起我的世界,梦想成真
-
梦晨衡宇萧箫发自凹非寺量子位|公众号QbitAI自从有人在《我的世界》里用红石电路造出CPU,就流传着一个梗:...
- [西门子PLC] 博途TIA portal SCL编程基础入门:1-点动与自锁
-
一、S7-SCL编程语言简介...
- 工作原理系列之:Modbus(modbus工作过程)
-
MODBUS是一种在自动化工业中广泛应用的高速串行通信协议。该协议是由Modion公司(现在由施耐德电气公司获得)于1979年为自己的可编程逻辑控制器开发的。该协议充当了PLCS和智能自动化设备之间的...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
MacOS + AList + 访达,让各种云盘挂载到本地(建议收藏)
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
- 最近发表
-
- 10款超实用JavaScript音频库(js播放音频代码)
- Howler.js,一款神奇的 JavaScript 开源网络音频工具库
- PROFINET转Modbus网关——工业协议融合的智能枢纽
- 简单实用的Modbus类库,支持从站和DTU
- [西门子PLC] S7-200 SMART PROFINET :通过GSD组态PLC设备
- Modbus(RTU / TCP)有什么异同(modbus tcp和tcp)
- Modbus通信调试步骤详解(modbus调试工具怎么用)
- 理解Intel手册汇编指令(intel 汇编指令手册)
- 「西门子PLC」S7-200 SMART的Modbus RTU通讯
- InfiniBand网络运维全指南:从驱动安装到故障排查
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)