用于备份 h2 数据库的 SQL“SCRIPT”命令
Posted
技术标签:
【中文标题】用于备份 h2 数据库的 SQL“SCRIPT”命令【英文标题】:SQL "SCRIPT" command to backup h2 database 【发布时间】:2016-11-14 15:20:57 【问题描述】:我有一个带有h2
数据库的应用程序。我想在 Java 中使用SCRIPT
命令创建.sql
文件。
如果我使用 Prepared Statement 执行它:
PreparedStatement stmt = con.prepareStatement("SCRIPT");
ResultSet rs = stmt.executeQuery();
那么我怎样才能在单个字符串中获得整个结果。我是 Java 新手,因此无法找到获取该查询结果的方法,因为它不包含列名。
然后我将使用InputStream
将其写入文件。
【问题讨论】:
【参考方案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但我知道数据库中存在表和其他对象.....有什么帮助吗?以上是关于用于备份 h2 数据库的 SQL“SCRIPT”命令的主要内容,如果未能解决你的问题,请参考以下文章