在h2数据库中执行脚本文件

时间:2012-05-20 17:53:57

标签: h2 sql-scripts

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

4 个答案:

答案 0 :(得分:83)

您可以使用RUNSCRIPT SQL statement

RUNSCRIPT FROM 'test.sql'

或者您可以使用RunScript standalone / command line tool

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

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

RunScript.execute(conn, new FileReader("test.sql"));

答案 1 :(得分:7)

如果您在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

答案 2 :(得分:6)

在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,请从here下载(点击每个版本旁边的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日更新)

答案 3 :(得分: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