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

elv*_*mar 54 h2 sql-scripts

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

Tho*_*ler 90

您可以使用RUNSCRIPT SQL语句:

RUNSCRIPT FROM 'test.sql'
Run Code Online (Sandbox Code Playgroud)

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

java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -script test.sql
Run Code Online (Sandbox Code Playgroud)

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

RunScript.execute(conn, new FileReader("test.sql"));
Run Code Online (Sandbox Code Playgroud)

  • 使用第一个示例是否有技巧?我有一个“ bootstrap.sql”,其中除了“ RUNSCRIPT FROM'test.sql'”外什么都不包含,而我的test.sql是引导文件的同级文件。如果我运行`jdbc:h2:mem:etsnom; INIT = RUNSCRIPT FROM'C:/workspace/bootstrap.sql',我会收到`FileNotFoundException`。 (2认同)
  • 如果我们使用Thomas的第二种方法来创建数据库,那么将设​​置默认用户名和密码,即""[空字符串].这是在"RunScript"类中实现的.但是,设置用户名和密码以访问数据库总是非常重要的,并且在H2数据库中这样做,我们可以在命令下运行,java -cp h2*.jar org.h2 .tools.RunScript -url jdbc:h2:〜/ test -user sa -password sa -script test.sql (2认同)

rob*_*ins 9

如果你在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
Run Code Online (Sandbox Code Playgroud)

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


Ash*_*dal 6

在OS X(版本1.4.192)上(这实际上并不重要),使用以下命令,无论我做什么,我都看不到任何结果:

java -cp h2*.jar org.h2.tools.RunScript -url "jdbc:h2:file:~/testdb" -user someusername -password somepass -script select.sql
Run Code Online (Sandbox Code Playgroud)

其中select.sql只是:

select * from PUBLIC.MYTABLE;
Run Code Online (Sandbox Code Playgroud)

我必须添加-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
Run Code Online (Sandbox Code Playgroud)

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

1.4.193 (更新31-OCT-2016)

1.4.192 (更新26个可能的2016)

1.4.191 (更新21-JAN-2016)

1.4.190 (更新11-OCT-2016)