首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >H2:生成插入脚本初始化脚本

H2:生成插入脚本初始化脚本
EN

Stack Overflow用户
提问于 2016-12-12 13:51:50
回答 1查看 8.3K关注 0票数 6

我有完整的h2数据库,里面有很多数据。我想对这些数据进行集成测试。

Question1:可以从完整的h2数据库生成*.sql插入文件/脚本吗?

我试过SCRIPT TO 'fileName',就像描述here一样。但是它只生成CREATE/ALTER TABLE/CONSTRAINT查询,意味着创建没有数据的模式。

如果第一个问题的答案是“不可能的”,那么:

Question2:是将初始数据集插入到h2 db以进行集成测试的唯一方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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工具,因为我已经使用过它。

下面是导出结构和数据的最小命令:

代码语言:javascript
运行
复制
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工具的官方帮助中有更多的详细信息:

代码语言:javascript
运行
复制
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数据集(解决方案之一)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41102406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档