【问题标题】:Executing script file in h2 database在 h2 数据库中执行脚本文件
【发布时间】:2012-05-27 09:27:05
【问题描述】:

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

【问题讨论】:

    标签: h2 sql-scripts


    【解决方案1】:

    您可以使用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"));
    

    【讨论】:

    • 使用你的第一个例子有技巧吗?我有一个bootstrap.sql,它只包含RUNSCRIPT FROM 'test.sql',我的test.sql 是引导文件的兄弟。如果我运行jdbc:h2:mem:etsnom;INIT=RUNSCRIPT FROM 'C:/workspace/bootstrap.sql',我会得到FileNotFoundException
    • 如果我们使用 Thomas 的第二种方法创建数据库,那么将设​​置默认的用户名和密码,即 "" [空字符串]。这是在“RunScript”类中实现的。但是,设置用户名和密码来访问数据库总是非常重要的,如果是 H2 数据库,我们可以运行下面的命令 java -cp h2*.jar org.h2 .tools.RunScript -url jdbc:h2:~/test -user sa -password sa -script test.sql
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      在 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 链接)。一些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 听起来很有趣,但我找不到如何提供预期结果的解释。
      【解决方案4】:

      对我来说,系统回应:

      没有找到 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

      【讨论】:

        猜你喜欢
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-16
        • 1970-01-01
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多