我有完整的h2数据库,其中包含大量数据。我想再次启动集成测试数据。
问题1: 是否可以从完整的h2数据库生成* .sql插入文件/脚本?
我按照here描述了SCRIPT TO 'fileName'
。但它只生成CREATE/ALTER TABLE/CONSTRAINT
个查询,意味着创建没有数据的模式。
如果回答第一个问题是“不可能”,那么:
问题2: * .sql插入文件是将初始数据集插入h2 db进行集成测试的唯一方法吗?
答案 0 :(得分:4)
问题1:是否可以从中生成* .sql插入文件/脚本 完整的h2数据库?
我刚刚测试了一个H2文件数据库,因此导出导出了结构和数据
我测试了H2的1.4.193
版本。
出口工作的两种方式:
SCRIPT
命令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 lib的类路径(我使用的那个是我的m2 repo)。<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)我已经使用H2控制台的SCRIPT
命令进行了测试。它也有效。
然而,SCRIPT
命令的结果可能会产生误导。
查看官方文档:
如果没有&#39; TO fileName&#39;指定子句,脚本作为返回 结果集。此命令可用于创建备份 数据库。对于长期存储,它比复制更容易携带 数据库文件。
如果&#39; TO fileName&#39;指定子句,然后是整个脚本 (包括插入语句)写入此文件,结果 没有插入语句的set被返回。
您已使用SCRIPT TO 'fileName'
命令。在这种情况下,整个脚本
(包括插入语句)写入此文件,因此在H2控制台中,除了insert语句之外,您将拥有所有内容
例如,输入SCRIPT TO 'D:\yourBackup.sql'
命令(如果使用它,则输入Unix友好目录),然后打开文件,您将看到存在SQL插入。
如文档中所述,如果要在H2控制台的输出结果中同时获取结构和插入语句,请不要指定TO
参数。
只需输入:SCRIPT
。
问题2:* .sql是否插入文件是插入初始化的唯一方法 数据集进入h2 db进行集成测试?
经过长时间讨论:)您可以使用DBunit数据集(其他解决方案)。