首先,我想说我对H2数据库比较陌生。我需要在H2数据库中执行一个SQL脚本文件。我有一个名为test.sql的脚本文件,并且希望在H2数据库中执行它。这是可能的吗?
首先,我想说我对H2数据库比较陌生。我需要在H2数据库中执行一个SQL脚本文件。我有一个名为test.sql的脚本文件,并且希望在H2数据库中执行它。这是可能的吗?
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"));
schema.sql
和data.sql
,并尝试运行这些脚本。因此,如果您将它们放在src/test/resources
中,它们应该会被自动识别并运行。application.properties
中添加一个属性,如下所示:spring.datasource.data=classpath:users.sql, classpath:books.sql, classpath:reviews.sql
将配置Spring运行这三个 SQL 文件,而不是运行 data.sql
。
在OSX上(这其实并不重要),使用版本为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
。以下是完整的命令:
我需要在-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日)
java -cp h2*.jar org.h2.tools.RunScript -?
显示可用选项。然而,我还没有找到更详细解释这些选项的文档。例如,选项 [-checkResults] Check if the query results match the expected results
听起来很有趣,但我找不到如何提供预期结果的说明。 - not2savvy对我来说,系统的响应是:
找不到org.h2.tools.RunScript驱动程序
解决方案是:
java -classpath <path_to_your_h2-*.jar> org.h2.tools.RunScript \
-url jdbc:h2:tcp://localhost/~/test -script test.sql
bootstrap.sql
的文件,里面什么都没有,只有RUNSCRIPT FROM 'test.sql'
,而我的test.sql
与引导文件位于同一目录下。如果我运行jdbc:h2:mem:etsnom;INIT=RUNSCRIPT FROM 'C:/workspace/bootstrap.sql'
,我会得到一个FileNotFoundException
错误。 - Snekse