我有完整的h2数据库,里面有很多数据。我想对这些数据进行集成测试。
Question1:可以从完整的h2数据库生成*.sql插入文件/脚本吗?
我试过SCRIPT TO 'fileName'
,就像描述here一样。但是它只生成CREATE/ALTER TABLE/CONSTRAINT
查询,意味着创建没有数据的模式。
如果第一个问题的答案是“不可能的”,那么:
Question2:是将初始数据集插入到h2 db以进行集成测试的唯一方法吗?
发布于 2016-12-12 19:20:17
Question1:可以从完整的h2数据库生成*.sql插入文件/脚本吗?
我刚刚用我的一个H2文件数据库进行了测试,结果导出了结构和数据。
我用1.4.193
版本的H2进行了测试。
出口工作的两种方式:
SCRIPT
控制台的H2命令org.h2.tools.Script
工具。1)我首先测试了org.h2.tools.Script
工具,因为我已经使用过它。
下面是导出结构和数据的最小命令:
java -cp <whereFoundYourH2Jar> org.h2.tools.Script -url <url>
-user <user> -password <password>
其中:
<whereFoundYourH2Jar>
是拥有h2.jar库的类路径(我使用了这个库,这是我的m2回购)。<url>
是数据库的url。<user>
是数据库的用户。<password>
数据库的密码您在org.h2.tools.Script
工具的官方帮助中有更多的详细信息:
Creates a SQL script file by extracting the schema and data of a database.
Usage: java org.h2.tools.Script <options>
Options are case sensitive. Supported options are:
[-help] or [-?] Print the list of options
[-url "<url>"] The database URL (jdbc:...)
[-user <user>] The user name (default: sa)
[-password <pwd>] The password
[-script <file>] The target script file name (default: backup.sql)
[-options ...] A list of options (only for embedded H2, see SCRIPT)
[-quiet] Do not print progress information
See also http://h2database.com/javadoc/org/h2/tools/Script.html
2)我从SCRIPT
控制台用H2命令进行了测试。这也很管用。
然而,SCRIPT
命令的结果可能有误导性。
请看正式文件:
如果没有指定'TO fileName‘子句,脚本将作为结果集返回。此命令可用于创建数据库的备份。对于长期存储,它比复制数据库文件更可移植。 如果指定了'TO fileName‘子句,则整个脚本(包括insert语句)将写入该文件,并返回不带insert语句的结果集。
您已经使用了SCRIPT TO 'fileName'
命令。在本例中,整个脚本(包括insert语句)被写入该文件,因此在H2控制台中,除了insert语句之外,您拥有所有内容。
例如,输入SCRIPT TO 'D:\yourBackup.sql'
命令(或者使用Unix友好目录),然后打开文件,您将看到存在SQL插入。
正如文档中所指定的,如果希望在H2控制台的输出结果中同时获得结构和插入语句,则不要指定TO
参数。只需输入:SCRIPT
。
Question2:是否*.sql插入文件是将初始数据集插入h2 db以进行集成测试的唯一方法?
正如长期讨论的那样:)您可以使用DBunit数据集(解决方案之一)。
https://stackoverflow.com/questions/41102406
复制相似问题