70

首先,我想说我是 h2 数据库的新手。我需要在 h2 数据库中执行一个 sql 脚本文件。我有一个脚本文件 test.sql,我想在 h2 数据库中执行它。可能吗?

4

4 回答 4

108

您可以使用RUNSCRIPT SQL 语句

RUNSCRIPT FROM 'test.sql'

或者您可以使用RunScript 独立/命令行工具

java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -script test.sql

您还可以在应用程序中使用 RunScript 工具:

RunScript.execute(conn, new FileReader("test.sql"));
于 2012-05-21T04:55:21.050 回答
18

如果您在 H2 中使用 spring-boot 和 spring-test,它将自动在您的类路径中查找schema.sqldata.sql尝试运行它们。因此,如果您将它们放入其中,src/test/resources它们应该会被拾取并自动运行

此外,您可以使用属性指定要运行的数据文件。例如,将属性添加到您的application.properties喜欢

spring.datasource.data=classpath:users.sql, classpath:books.sql, classpath:reviews.sql

将配置spring来运行这三个sql文件而不是运行data.sql

于 2018-03-12T11:48:09.320 回答
11

在 OSX(这不应该很重要)上使用 v. 1.4.192 使用以下命令,无论我做什么,我都看不到任何结果:

java -cp h2*.jar org.h2.tools.RunScript -url "jdbc:h2:file:~/testdb" -user someusername -password somepass -script select.sql

select.sql 简单的地方:

select * from PUBLIC.MYTABLE;

我必须添加-showResults之前的输出开始出现。这是完整的命令:

java -cp /Users/az/.m2/repository/com/h2database/h2/1.4.192/h2-1.4.192.jar org.h2.tools.RunScript -url "jdbc:h2:file:~/testdb" -user someusername -password somepass -script select.sql -showResults

如果您没有所需的 jar,请从此处下载(单击jar每个版本旁边的链接)。一些 jar 的直接链接如下:

1.4.193 (2016 年 10 月 31 日更新)

1.4.192 (2016 年 5 月 26 日更新)

1.4.191 (2016 年 1 月 21 日更新)

1.4.190 (2016 年 10 月 11 日更新)

于 2016-11-21T18:42:21.703 回答
2

对我来说,系统回应:

没有找到 org.h2.tools.RunScript 驱动程序

解决方案是:

java -classpath <path_to_your_h2-*.jar> org.h2.tools.RunScript \
-url jdbc:h2:tcp://localhost/~/test -script test.sql

见:http ://www.h2database.com/html/tutorial.html#using_server

于 2015-04-22T13:38:45.203 回答