基于vba技术自定义生成数据库测试数据的方法与系统
技术领域:
:1.本发明涉及数据库测试
技术领域:
:,特别涉及一种基于vba技术自定义生成数据库测试数据的方法与系统。
背景技术:
::2.随着网络和信息技术的不断普及、互联网行业的快速发展,产生的数据量正在呈指数级增长,对于数据库的需求也激烈增长。尤其近十年,国产数据库崛起,大量分布式数据库占领市场。3.随着国产数据库的发展,数据库的测试也日渐重要。但是在实际测试中,大数据量的测试场景以及模拟实际业务需求的测试场景却比较少。其中一个原因就是测试数据较难获得,导致实际测试场景中都是小数据量的单表测试。4.现有技术中,通常使用benchmark工具生成测试数据。但是该方法生成csv文件的时间较长,且生成的数据之间存在的关联关系复杂、目前资料较少,不易书写sql语句来进行测试。而且benchmark工具生成的数据是由代码封锁的,不支持自定义生成数据的类型与范围,局限性较大。5.为了解决上述问题,本发明提出了一种基于vba技术自定义生成数据库测试数据的方法与系统。技术实现要素:6.本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于vba技术自定义生成数据库测试数据的方法与系统。7.本发明是通过如下技术方案实现的:8.一种基于vba技术自定义生成数据库测试数据的方法,其特征在于,包括以下步骤:9.第一步、选择数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名的结构化数据和非结构化数据;10.第二步、将生成的结构化数据和非结构化数据打包存储为csv文件;11.第三步、根据所选择的数据类型生成数据的导入语句,测试时结合csv文件,使用数据库导入语法,将数据表导入数据库内即可。12.所述第一步中,采用excel的indirect函数填充配置页下拉信息,采用indirect函数读取数据库类型、数据库的数据类型、自定义数据类型、业务数据模型以及表关联模板。13.所述第一步中,利用vba技术将选择的数据库类型转化为程序对应类型,并根据数据库的数据类型与excel读取配置页所选择的类型构建映射关系,将选择的数据库类型用vb代码中存在的类型来描述;14.生成非结构化数据时,支持浮点数、整数的自动生成以及集合内的字符生成;15.当数据类型为数字时,在配置页定义数据大小与类型,由vba读取配置页定义的范围,确定数据的上限和下限,利用vba的rnd函数生成该范围内的随机数;16.当数据类型为字符时,使用end(xlup)函数读取到定义的最后一行,然后根据该行数定义数组的范围,将所写数据存入vb的数组中,再由vb的random函数随机生成集合的随机数。17.所述第一步中,生成结构化数据时,根据用于模拟实际业务的业务数据模型提供的表关联模板编写sql语句;在配置页选择生成的数据表名,根据数据表名生成对应的数据,读取配置页数据的条数,再利用vba内的for循环得到数据,使用vba代码的thisworkbook.sheets方式回填,打包存储为csv文件;18.在配置页生成数据时,根据预设的映射关系将数字类型的数据定义为某区间的正整数,将字符类型的数据定义为某集合的字符串。19.所述第二步中,读取配置页模块定义的文件位置和文件名,使用vba的saveas将excel内数据转储至csv文件。20.所述第三步中,根据选择数据的类型、数据库以及数据表名生成load语句,针对不同数据库设定不同的导入语法,结合csv文件,将数据表导入数据库。21.一种基于vba技术自定义生成数据库测试数据的系统,其特征在于:包括数据模型模块、数据配置模块、数据存储模块和生成导入语句模块;22.所述数据模型模块负责提供支持的数据库类型、数据库的数据类型、自定义数据类型以及业务数据模型,所述业务数据模型能够模拟实际业务,提供表关联模板用于编写sql语句;23.所述数据配置模块负责在配置页选择数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名的结构化数据和非结构化数据;24.所述数据存储模块负责读取配置页模块定义的文件位置和文件名,使用vba的saveas将生成的结构化数据和非结构化数据打包存储为csv文件;25.所述生成导入语句模块负责根据选择数据的类型、数据库以及数据表名生成load语句,针对不同数据库设定不同的导入语法。26.所述数据配置模块利用vba技术将选择的数据库类型转化为程序对应类型,并根据数据库的数据类型与excel读取配置页所选择的类型构建映射关系,将选择的数据库类型用vb代码中存在的类型来描述;27.生成非结构化数据时,支持浮点数、整数的自动生成以及集合内的字符生成;28.当数据类型为数字时,在配置页定义数据大小与类型,由vba读取配置页定义的范围,确定数据的上限和下限,利用vba的rnd函数生成该范围内的随机数;29.当数据类型为字符时,使用end(xlup)函数读取到定义的最后一行,然后根据该行数定义数组的范围,将所写数据存入vb的数组中,再由vb的random函数随机生成集合的随机数;30.生成结构化数据时,根据用于模拟实际业务的业务数据模型提供的表关联模板编写sql语句;在配置页选择生成的数据表名,根据数据表名生成对应的数据,读取配置页数据的条数,再利用vba内的for循环得到数据,使用vba代码的thisworkbook.sheets方式回填,打包存储为csv文件;31.在配置页生成数据时,根据预设的映射关系将数字类型的数据定义为某区间的正整数,将字符类型的数据定义为某集合的字符串。32.本发明的有益效果是:该基于vba技术自定义生成数据库测试数据的方法与系统,不仅支持多种类型数据库测试,生成数据灵活性更高,还简化了测试填充数据的过程,支持自定义生成数据的类型与范围,解决了多种类型数据库大数据量测试的难题。附图说明33.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。34.附图1为本发明基于vba技术自定义生成数据库测试数据的方法示意图。具体实施方式35.为了使本
技术领域:
:的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。36.vba(visualbasicforapplications)是visualbasic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(ole)任务的编程语言。主要能用于扩展windows的应用程序功能,特别是microsoftoffice软件。37.csv(comma-separatedvalues,逗号分隔值)又称为字符分隔值,因为分隔字符也可以不是逗号,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。csv文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。38.该基于vba技术自定义生成数据库测试数据的方法,包括以下步骤:39.第一步、选择数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名的结构化数据和非结构化数据;40.第二步、将生成的结构化数据和非结构化数据打包存储为csv文件;41.第三步、根据所选择的数据类型生成数据的导入语句,测试时结合csv文件,使用数据库导入语法,将数据表导入数据库内即可。42.所述第一步中,采用excel的indirect函数填充配置页下拉信息,采用indirect函数读取数据库类型、数据库的数据类型、自定义数据类型、业务数据模型以及表关联模板。43.所述第一步中,利用vba技术将选择的数据库类型转化为程序对应类型,并根据数据库的数据类型与excel读取配置页所选择的类型构建映射关系,将选择的数据库类型用vb代码中存在的类型来描述;例如int2转为-32768~32767的整数,支持随机生成这些数据类型的数据。44.生成非结构化数据时,支持浮点数、整数的自动生成以及集合内的字符生成;45.当数据类型为数字时,在配置页定义数据大小与类型,由vba读取配置页定义的范围,确定数据的上限和下限,利用vba的rnd函数生成该范围内的随机数;46.当数据类型为字符时,使用end(xlup)函数读取到定义的最后一行,然后根据该行数定义数组的范围,将所写数据存入vb的数组中,再由vb的random函数随机生成集合的随机数。47.所述第一步中,生成结构化数据时,根据用于模拟实际业务的业务数据模型提供的表关联模板编写sql语句;在配置页选择生成的数据表名,根据数据表名生成对应的数据,读取配置页数据的条数,再利用vba内的for循环得到数据,使用vba代码的thisworkbook.sheets方式回填,打包存储为csv文件;48.在配置页生成数据时,根据预设的映射关系将数字类型的数据定义为某区间的正整数,将字符类型的数据定义为某集合的字符串。49.所述第一步中,生成的结构化数据和非结构化数据都是各类型数据库表结构通用的,支持的各类型数据库均可以使用。50.所述第二步中,读取配置页模块定义的文件位置和文件名,使用vba的saveas将excel内数据转储至csv文件。51.所述第三步中,根据选择数据的类型、数据库以及数据表名生成load语句,针对不同数据库设定不同的导入语法,结合csv文件,将数据表导入数据库。52.该基于vba技术自定义生成数据库测试数据的系统,包括数据模型模块、数据配置模块、数据存储模块和生成导入语句模块;53.所述数据模型模块负责提供支持的数据库类型、数据库的数据类型、自定义数据类型以及业务数据模型,所述业务数据模型能够模拟实际业务,提供表关联模板用于编写sql语句;54.所述数据模型模块支持的数据库类型以及数据库的数据类型见表1,通过查询数据类型模板即可获取目前支持的类型。55.表1数据模型模块支持的数据库类型以及数据库的数据类型[0056][0057]所述数据配置模块负责在配置页选择数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名的结构化数据和非结构化数据;[0058]所述数据存储模块负责读取配置页模块定义的文件位置和文件名,使用vba的saveas将生成的结构化数据和非结构化数据打包存储为csv文件;[0059]所述生成导入语句模块负责根据选择数据的类型、数据库以及数据表名生成load语句,针对不同数据库设定不同的导入语法。[0060]所述数据配置模块利用vba技术将选择的数据库类型转化为程序对应类型,并根据数据库的数据类型与excel读取配置页所选择的类型构建映射关系,将选择的数据库类型用vb代码中存在的类型来描述;[0061]生成非结构化数据时,支持浮点数、整数的自动生成以及集合内的字符生成;[0062]当数据类型为数字时,在配置页定义数据大小与类型,由vba读取配置页定义的范围,确定数据的上限和下限,利用vba的rnd函数生成该范围内的随机数;[0063]当数据类型为字符时,使用end(xlup)函数读取到定义的最后一行,然后根据该行数定义数组的范围,将所写数据存入vb的数组中,再由vb的random函数随机生成集合的随机数;[0064]生成结构化数据时,根据用于模拟实际业务的业务数据模型提供的表关联模板编写sql语句;在配置页选择生成的数据表名,根据数据表名生成对应的数据,读取配置页数据的条数,再利用vba内的for循环得到数据,使用vba代码的thisworkbook.sheets方式回填,打包存储为csv文件;[0065]在配置页生成数据时,根据预设的映射关系将数字类型的数据定义为某区间的正整数,将字符类型的数据定义为某集合的字符串。[0066]以znbase数据库的int类型为例进行说明:[0067]数据配置模块读取到数据类型后,按照映射关系将int8类型的数据定义为2^-63~2^63-1区间的正整数,确定区间的上下限;同时确定生成数据条数为20条,则将循环20次生成个随机数回填至数据存储模块中。[0068]常规数据库均支持使用csv文件导入数据,因此数据存储模块调用后台vba代码将本页数据另存为csv文件。[0069]数据库的导入语句由load语法主框架组成,拼接了数据表名与文件名。其中,数据表名默认为test,且可以修改,文件名默认为test.csv。数据表的字段类型根据所选数据类型生成,例如选择整数则转化为int类型数据,再使用“&”和“+”将几部分拼接共同生成导出语句:loadtable表名(列名列类型)文件位置//csv文件。[0070]与现有技术相比,该基于vba技术自定义生成数据库测试数据的方法与系统,具有以下特点:[0071]第一、目前现有的benchmark主要用于生成tpcc测试数据,也就是结构化数据,对于一些只需要简单数值的场景不适用;该方法能够自由选择数据类型与数据范围,不仅可以生成结构化数据,也可以生成非结构化数据,应用场景更加灵活,且生成数据也可以与jmeter工具来进行性能测试。[0072]第二、能够通过自定义字符串合集来生成语句,比例如需要生产一组人名、公司等信息时,可以手动填充期望值,再从期望值中随机选取生成数据,最后一起使用load语法导入,极大的简化了测试填充数据的过程。[0073]第三、现有工具benchmark的表关联模板较为复杂,资料较少;该方法提供的表关联模板更清晰,使sql语句编写更加容易。[0074]第四、现有工具benchmark生成的数据量是按照csv文件大小来决定的,而该方法支持指定生成数据数量。[0075]第五、提供数据后,可以结合excel公式,如round、mid函数等快速修改部分数据再进行导入语法,生成数据非常灵活。[0076]第六、当有分区、主键、索引等需求时,可以直接在相应的导入语句做修改,方便快捷。[0077]以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。当前第1页12当前第1页12
技术特征:
1.一种基于vba技术自定义生成数据库测试数据的方法,其特征在于,包括以下步骤:第一步、选择数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名的结构化数据和非结构化数据;第二步、将生成的结构化数据和非结构化数据打包存储为csv文件;第三步、根据所选择的数据类型生成数据的导入语句,测试时结合csv文件,使用数据库导入语法,将数据表导入数据库内即可。2.根据权利要求1所述的基于vba技术自定义生成数据库测试数据的方法,其特征在于:所述第一步中,采用excel的indirect函数填充配置页下拉信息,采用indirect函数读取数据库类型、数据库的数据类型、自定义数据类型、业务数据模型以及表关联模板。3.根据权利要求1或2所述的基于vba技术自定义生成数据库测试数据的方法,其特征在于:所述第一步中,利用vba技术将选择的数据库类型转化为程序对应类型,并根据数据库的数据类型与excel读取配置页所选择的类型构建映射关系,将选择的数据库类型用vb代码中存在的类型来描述;生成非结构化数据时,支持浮点数、整数的自动生成以及集合内的字符生成;当数据类型为数字时,在配置页定义数据大小与类型,由vba读取配置页定义的范围,确定数据的上限和下限,利用vba的rnd函数生成该范围内的随机数;当数据类型为字符时,使用end(xlup)函数读取到定义的最后一行,然后根据该行数定义数组的范围,将所写数据存入vb的数组中,再由vb的random函数随机生成集合的随机数。4.根据权利要求1或2所述的基于vba技术自定义生成数据库测试数据的方法,其特征在于:所述第一步中,生成结构化数据时,根据用于模拟实际业务的业务数据模型提供的表关联模板编写sql语句;在配置页选择生成的数据表名,根据数据表名生成对应的数据,读取配置页数据的条数,再利用vba内的for循环得到数据,使用vba代码的thisworkbook.sheets方式回填,打包存储为csv文件;在配置页生成数据时,根据预设的映射关系将数字类型的数据定义为某区间的正整数,将字符类型的数据定义为某集合的字符串。5.根据权利要求1所述的基于vba技术自定义生成数据库测试数据的方法,其特征在于:所述第二步中,读取配置页模块定义的文件位置和文件名,使用vba的saveas将excel内数据转储至csv文件。6.根据权利要求1所述的基于vba技术自定义生成数据库测试数据的方法,其特征在于:所述第三步中,根据选择数据的类型、数据库以及数据表名生成load语句,针对不同数据库设定不同的导入语法,结合csv文件,将数据表导入数据库。7.一种基于vba技术自定义生成数据库测试数据的系统,其特征在于:包括数据模型模块、数据配置模块、数据存储模块和生成导入语句模块;所述数据模型模块负责提供支持的数据库类型、数据库的数据类型、自定义数据类型以及业务数据模型,所述业务数据模型能够模拟实际业务,提供表关联模板用于编写sql语句;所述数据配置模块负责在配置页选择数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数
据的文件名的结构化数据和非结构化数据;所述数据存储模块负责读取配置页模块定义的文件位置和文件名,使用vba的saveas将生成的结构化数据和非结构化数据打包存储为csv文件;所述生成导入语句模块负责根据选择数据的类型、数据库以及数据表名生成load语句,针对不同数据库设定不同的导入语法。8.根据权利要求7所述的基于vba技术自定义生成数据库测试数据的系统,其特征在于:所述数据配置模块利用vba技术将选择的数据库类型转化为程序对应类型,并根据数据库的数据类型与excel读取配置页所选择的类型构建映射关系,将选择的数据库类型用vb代码中存在的类型来描述;生成非结构化数据时,支持浮点数、整数的自动生成以及集合内的字符生成;当数据类型为数字时,在配置页定义数据大小与类型,由vba读取配置页定义的范围,确定数据的上限和下限,利用vba的rnd函数生成该范围内的随机数;当数据类型为字符时,使用end(xlup)函数读取到定义的最后一行,然后根据该行数定义数组的范围,将所写数据存入vb的数组中,再由vb的random函数随机生成集合的随机数;生成结构化数据时,根据用于模拟实际业务的业务数据模型提供的表关联模板编写sql语句;在配置页选择生成的数据表名,根据数据表名生成对应的数据,读取配置页数据的条数,再利用vba内的for循环得到数据,使用vba代码的thisworkbook.sheets方式回填,打包存储为csv文件;在配置页生成数据时,根据预设的映射关系将数字类型的数据定义为某区间的正整数,将字符类型的数据定义为某集合的字符串。
技术总结
本发明特别涉及一种基于VBA技术自定义生成数据库测试数据的方法与系统。该基于VBA技术自定义生成数据库测试数据的方法与系统,生成用于定义数据库类型、数据类型、数据数量、存放位置以及生成数据的文件名的结构化数据和非结构化数据;将生成的结构化数据和非结构化数据打包存储为CSV文件;根据所选择的数据类型生成数据的导入语句,测试时结合CSV文件,使用数据库导入语法,将数据表导入数据库内即可。该基于VBA技术自定义生成数据库测试数据的方法与系统,不仅支持多种类型数据库测试,生成数据灵活性更高,还简化了测试填充数据的过程,支持自定义生成数据的类型与范围,解决了多种类型数据库大数据量测试的难题。了多种类型数据库大数据量测试的难题。了多种类型数据库大数据量测试的难题。
技术研发人员:苗玉
受保护的技术使用者:浪潮软件集团有限公司
技术研发日:2021.12.21
技术公布日:2022/3/8