在对程序进行测试时,需要向数据库中插入大量数据来进行模拟。目前有很多工具可以自动生成,比如开源的dbmonster。
该工具通过配置数据库表的信息就可以生成指定条数的数据。
从网站上下载dbmonster-core-1.0.3包后,把相应的数据库jar包拷贝到lib目录下,比如mysql的jar包。然后配置
dbmonster.properties:
dbmonster.jdbc.driver=com.mysql.jdbc.Driver dbmonster.jdbc.url=jdbc:mysql://127.0.0.1:3306/test?charSet=utf-8 dbmonster.jdbc.username=root dbmonster.jdbc.password=root # 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.ProgressMonitorAdapterdbmonster.progress.monitor=pl.kernelpanic.dbmonster.ProgressMonitorAdapter
从配置项可以看出,就是配置要插入数据的数据库信息。
然后配置dbmonster-schema.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 schema</name> <table name="t_project_test" rows="5000"> <!-- 设置表名和要生成的数据条数--> <key databaseDefault="false"> <!-- 设置主键--> <generator type="pl.kernelpanic.dbmonster.generator.MaxKeyGenerator"> <!-- 主键生成器,还有一个生成字符串主键的StringKeyGenerator类--> <property name="columnName" value="id"/> <!-- 设置主键列名--> </generator> </key> <column name="contractid" databaseDefault="false"> <generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> <!-- 设置列属性,数字生成器--> <property name="minValue" value="1"/> <property name="maxValue" value="500"/> <property name="returnedType" value="integer"/> <!--可选值short, integer, long, float, double, numeric,默认为short--> <property name="scale" value=" <property name="nulls" value="0"/> <!-- 每100个生成null的概率--> </generator> </column> <column name="contractnum" databaseDefault="false"> <generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> <!-- 字符串生成器--> <property name="allowSpaces" value="false"/> <property name="excludeChars" value=""/> <property name="maxLength" value="16"/> <property name="minLength" value="12"/> <property name="nulls" value="0"/> </generator> </column> <column name="number" databaseDefault="false"> <generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> <property name="allowSpaces" value="false"/> <property name="excludeChars" value=""/> <property name="maxLength" value="16"/> <property name="minLength" value="12"/> <property name="nulls" value="0"/> </generator> </column> <column name="realprice" databaseDefault="false"> <generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> <property name="minValue" value="1"/> <property name="maxValue" value="50000000"/> <property name="returnedType" value="long"/> <property name="nulls" value="0"/> </generator> </column> <column name="starttime" databaseDefault="false"> <generator type="pl.kernelpanic.dbmonster.generator.DateTimeGenerator"> <!-- 时间生成器--> <property name="startDate" value="2013-04-08"/> <property name="endDate" value="2014-12-31"/> <property name="returnedType" value="date"/> <!-- 可选项date, time, timestamp,默认为date--> <property name="nulls" value="0"/> </generator> </column> <column name="pricezero" databaseDefault="false"> <generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> <property name="minValue" value="1"/> <property name="maxValue" value="50000000"/> <property name="returnedType" value="double"/> <property name="nulls" value="0"/> </generator> </column> </table> </dbmonster-schema>配置完后,进入到bin目录下,运行
dbmonster.bat -c dbmonster.proprities -s dbmonster-schema.xml。