dbmonster介绍
dbmonster的相关资料都在安装包下的docs文件夹里
什么是DBMonster?
DBMonster是一个工具,可以帮助数据库应用程序开发人员调整数据库的结构,调整索引的使用,并在繁重的数据库负载下测试应用程序性能。
DBMonster根据需要生成随机数据,并将其放入SQL数据库。
它提供了一个非常可插拔的界面,易于使用。
它是如何工作的?
DBMonster的执行思路非常简单。它是面向表的怪物,这意味着它逐个表去生成数据。
DBMonster可以为以下类型生成数据:
SQL char,varchar和text的字符串,
SQL int4和int8的整数,
SQL任意数字类型和任意精度的数字,
booleans for SQL boolean,
SQL日期时间和时间戳的时间戳。
DBMonster从XML模式文件中读取表定义,并从第一个表启动生成过程。如果表包含使用(s)外键约束的列,则DBMosnter将首先生成所需的表。表顺序是即时计算的。
数据生成过程基于Generators概念。每列都有自己的值生成器,它知道如何生成随机值。有几个预定义的生成器(如StringGenerator,NumberGenerator,BooleanGenerator等),但您可以编写更适合您需要的软件(如果需要)。发电机接口很简单,但非常灵活。
元组以强力方式插入数据库。当列在非键列上具有唯一索引时,它很重要。如果一行无法插入数据库,DBMonster会尝试查找其他值。可以通过<dbmonster.max-tries>配置变量配置最大尝试次数。默认值为1000。
1.安装jdk
自行百度即可(注意:环境变量的配置,JAVA_HOME,CLASSPATH,PATH)
2.下载安装dbmonster
>>>官网下载地址
打开后点开dbmonster-core,点选v.1.0.3,然后点选dbmonster-core-1.0.3.tar.gz,即可下载。
下载解压后放到某个地方就行(我放到了系统盘的Program Files文件下)
刚下载的文件包含如图所示文件
3.配置相应文件及环境
3.1创建dbmonster.properties配置文件
文件内容为
#旧版jdbc连接:com.mysql.jdbc.Driver
dbmonster.jdbc.driver=com.mysql.cj.jdbc.Driver
dbmonster.jdbc.url=jdbc:mysql://127.0.0.1:3306/test?charSet=utf-8&serverTimezone=GMT%2B8&useSSL=false
dbmonster.jdbc.username=root
dbmonster.jdbc.password=123456
dbmonster.jdbc.transaction.size=50
# for Oracle and other schema enabled databases
dbmonster.jdbc.schema=test
# maximal number of (re)tries
dbmonster.max-tries=1000
# default rows number for SchemaGrabber
dbmonster.rows=1000
# progres monitor class
dbmonster.progress.monitor=pl.kernelpanic.dbmonster.ProgressMonitorAdapter
3.2添加classpath
将dbmonster安装路径添加到classpath环境变量中
(正因为这个路径中的空格导致出现错误,纠结半天)
C:\Program Files\dbmonster-core-1.0.3
3.3将msql.jdbc复制添加到dbmonster的lib文件夹下
如图所示
3.4修改dbmonster.bat文件内容
3.4.1增加了pause
可以查看文件执行情况(当然如果用cmd命令执行dbmonster.bat文件则无所谓了)
3.4.2增加xml和dbmonster.properties执行路径
提示:如果执行文件用的是下面这个命令无需这步操作
dbmonster.bat -c dbmonster.properties -s dbmonster-schema.xml
如果想直接用cmd执行dbmonster.bat
则需要在dbmonster.bat文件上添加
-s .\*.xml -c .\dbmonster.properties
修改后的文件内容
rem Batch file to run dbmonster under Windows
rem Contributed by Peter De Bruycker
@echo off
cd ..
rem Add all jars....
for %%i in (".\lib\*.jar") do call ".\bin\cpappend.bat" %%i
for %%i in (".\*.jar") do call ".\bin\cpappend.bat" %%i
call ".\bin\cpappend.bat" .\log4j.properties
java -classpath "%CLASSPATH%" pl.kernelpanic.dbmonster.Launcher %* -s .\*.xml -c .\dbmonster.properties
cd bin
pause
3.5配置xml文件
指定需要添加数据的数据库和表,以及表字段。提示:不要漏掉指定外键和主键。
配置好后的xml文件内容如下
<?xml version="1.0"?>
<!DOCTYPE dbmonster-schema PUBLIC "-//kernelpanic.pl//DBMonster Database Schema DTD 1.1//EN" "http://dbmonster.kernelpanic.pl/dtd/dbmonster-schema-1.1.dtd">
<dbmonster-schema>
<name>test</name>
<table name="student" rows="50"><!-- 设置产生的数据行数-->
<column name="name" databaseDefault="false">
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator">
<property name="allowSpaces" value="true"/>
<property name="excludeChars" value=""/>
<property name="maxLength" value="15"/>
<property name="minLength" value="5"/>
<property name="nulls" value="0"/>
</generator>
</column>
<column name="class" databaseDefault="false">
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator">
<property name="allowSpaces" value="true"/>
<property name="excludeChars" value=""/>
<property name="maxLength" value="20"/>
<property name="minLength" value="5"/>
<property name="nulls" value="0"/>
</generator>
</column>
<column name="teacherId" databaseDefault="false">
<generator type="pl.kernelpanic.dbmonster.generator.ForeignKeyGenerator"><!-- 设置外键-->
<property name="tableName" value="teacher"/><!-- 设置外键所在表-->
<property name="columnName" value="id"/><!-- 设置外键列名称-->
</generator>
</column>
</table>
<table name="teacher" rows="10"><!-- 设置产生的数据行数-->
<key databaseDefault="false"> <!-- 设置主键-->
<generator type="pl.kernelpanic.dbmonster.generator.MaxKeyGenerator">
<property name="columnName" value="id"/> <!-- 设置主键列名-->
</generator>
</key>
<column name="name" databaseDefault="false">
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator">
<property name="allowSpaces" value="true"/>
<property name="excludeChars" value=""/>
<property name="maxLength" value="15"/>
<property name="minLength" value="5"/>
<property name="nulls" value="0"/>
</generator>
</column>
<column name="class" databaseDefault="false">
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator">
<property name="allowSpaces" value="true"/>
<property name="excludeChars" value=""/>
<property name="maxLength" value="20"/>
<property name="minLength" value="5"/>
<property name="nulls" value="0"/>
</generator>
</column>
</table>
</dbmonster-schema>
4.运行dbmonster
先将dbmonster-core-1.0.3.jar所在的路径配置到classpath环境变量中;
方法一 运行bat文件
运行dbmonster-core-1.0.3\bin\dbmonster.bat(我的是win10系统)
方法二 cmd命令执行
cmd命令进入bin所在文件夹下,然后执行运行代码
执行命令的不同,意味着不同的配置方法,上面已有介绍
cd C:\Program Files\dbmonster-core-1.0.3\bin
dbmonster.bat -c dbmonster.proprities -s dbmonster-schema.xml
或者是
dbmonster.bat
说明:
DBMonster 运行时的主要参数是-c和-s,分别指明配置文件和schema文件的位置。
缺省的配置文件位于DBMonster的安装目录下,名称是 dbmonster.properties(此文件需手动新建),另外需将examples目录中dbmonster-schema.xml文件拷贝到DBMonster的安装目录下。
运行成功
出现的错误汇总
记录曾经走过的坑坑洼洼,手动哭脸。。。。
1主类加载错误
原因
classpath配置的路径中包含空格字符
方案
在bin下的dbmonster.bat文件中的classpath添加引号,如下
java -classpath "%CLASSPATH%" pl.kernelpanic.dbmonster.Launcher %*
2jdbc老版警示(不算是错误)
jdbc的书写被告知老了
方案
#旧版jdbc连接:com.mysql.jdbc.Driver
dbmonster.jdbc.driver=com.mysql.cj.jdbc.Driver
3时区错误
在
dbmonster.jdbc.url=jdbc:mysql://127.0.0.1:3306/test?charSet=utf-8
后面添加时区设置代码
&serverTimezone=GMT%2B8&useSSL=false