Grails 3.3 执行H2脚本命令
Grails 3.3 execute H2 script command
我是 运行 一个使用基于 H2 文件的数据库的小型 Grails 3.3.0 应用程序。出于简单的备份原因,我想使用 H2 特定的 SCRIPT 命令将当前数据库状态转储到文件中:
SCRIPT TO /path/to/backup/dir/tempoDb.sql;
目前我正在尝试像这样执行本机 SQL 命令。
User.withSession { session ->
NativeSQLQuerySpecification nativeSQLQuerySpecification = new NativeSQLQuerySpecification("SCRIPT TO /path/to/backup/dir/tempoDb.sql;", null, null)
session.executeNativeUpdate(nativeSQLQuerySpecification, new QueryParameters())
}
但这不起作用。
您可以自动装配 dataSource
并尝试使用从数据源获得的连接 运行 您的 sql 查询而不通过 Hibernate。 dataSource
bean 在 Grails Spring 上下文中注册,它是 javax.sql.DataSource
.
的一个实例
这是一个将当前 H2 数据库备份到文件系统的 Grails 服务示例。
@ReadOnly
class BackupService {
DataSource dataSource
def backup() {
def sql = "SCRIPT DROP TO '${System.properties['java.io.tmpdir']}/backup.sql'"
Statement statement = dataSource.connection.createStatement()
boolean result = statement.execute(sql)
}
}
我是 运行 一个使用基于 H2 文件的数据库的小型 Grails 3.3.0 应用程序。出于简单的备份原因,我想使用 H2 特定的 SCRIPT 命令将当前数据库状态转储到文件中:
SCRIPT TO /path/to/backup/dir/tempoDb.sql;
目前我正在尝试像这样执行本机 SQL 命令。
User.withSession { session ->
NativeSQLQuerySpecification nativeSQLQuerySpecification = new NativeSQLQuerySpecification("SCRIPT TO /path/to/backup/dir/tempoDb.sql;", null, null)
session.executeNativeUpdate(nativeSQLQuerySpecification, new QueryParameters())
}
但这不起作用。
您可以自动装配 dataSource
并尝试使用从数据源获得的连接 运行 您的 sql 查询而不通过 Hibernate。 dataSource
bean 在 Grails Spring 上下文中注册,它是 javax.sql.DataSource
.
这是一个将当前 H2 数据库备份到文件系统的 Grails 服务示例。
@ReadOnly
class BackupService {
DataSource dataSource
def backup() {
def sql = "SCRIPT DROP TO '${System.properties['java.io.tmpdir']}/backup.sql'"
Statement statement = dataSource.connection.createStatement()
boolean result = statement.execute(sql)
}
}