【问题标题】:SQL "SCRIPT" command to backup h2 database用于备份 h2 数据库的 SQL“SCRIPT”命令
【发布时间】:2016-11-14 15:20:57
【问题描述】:

我有一个带有h2 数据库的应用程序。我想在 Java 中使用SCRIPT 命令创建.sql 文件。

如果我使用 Prepared Statement 执行它:

PreparedStatement stmt = con.prepareStatement("SCRIPT");
ResultSet rs = stmt.executeQuery();

那么我怎样才能在单个字符串中获得整个结果。我是 Java 新手,因此无法找到获取该查询结果的方法,因为它不包含列名。

然后我将使用InputStream将其写入文件。

【问题讨论】:

    标签: java sql h2


    【解决方案1】:

    如果你想备份到一个文件中,你的H2实例的内容为SQL脚本,你可以直接使用SCRIPT TO 'path/to/my/file.sql'

    try (Connection con = ...;
         Statement stmt = conn.createStatement()) {
        stmt.executeQuery(String.format("SCRIPT TO '%s'", sqlFilePath));
    }
    

    如果您想将其备份ZIP存档,您可以使用BACKUP TO 'path/to/my/file.zip'

    try (Connection con = ...;
         Statement stmt = conn.createStatement()) {
        stmt.executeQuery(String.format("BACKUP TO '%s'", zipFilePath));
    }
    

    【讨论】:

    • 好的,现在我知道如何将它移动到文件中了。将尝试并更新。
    • 它工作正常,但 stmt.executeUpdate 需要替换为 stmt.executeQuery
    • 也许我做错了什么,但在创建后执行此语句并仅获得一个文件,其中包含“CREATE USER IF NOT EXISTS”SA” SALT '4d7ed4bf3238b907' HASH '8326f36da8ddeddb5edb065ad2b6ac59536448f26d99ebf8c3c70e800但我知道数据库中存在表和其他对象.....有什么帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2016-01-22
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多