如何在运行时备份嵌入式H2数据库引擎?

Win*_*hen 18 java database backup h2

我想用H2数据库引擎构建一个Web应用程序.但是,在阅读本教程后,我仍然不知道如何在数据库运行时备份数据:

http://www.h2database.com/html/tutorial.html#upgrade_backup_restore

H2是否将其存储的文件输出到文件系统中的某个位置?我可以备份输出的文件吗?

Jay*_*ren 13

H2存储在文件系统中,但最好使用您引用的备份工具,因为文件格式可以在H2版本之间更改.如果升级H2,它可能不再能够读取它在先前版本中创建的文件.此外,如果您复制它使用的文件,我建议先关闭数据库,否则H2可能无法读取复制的文件.

文件的位置取决于您指定的jdbc url.请参阅常见问题解答:http: //www.h2database.com/html/faq.html


Jus*_*s12 8

根据您链接教程,建议不要通过在文件运行时复制文件来备份数据库.这是在数据库运行时备份数据库的正确方法(Scala代码,但可以很容易地转换为Java)(来源):

val connection:java.sql.Connection = ??? // get a database connection 
connection.prepareStatement("BACKUP TO 'myFile.zip'").executeUpdate 
Run Code Online (Sandbox Code Playgroud)


小智 6

感谢 Jus12 的好回答。我将其改编为 Spring Data 中的 JPARepositories,并想在这里分享它,因为我在网上找不到类似的答案:

@Modifying
@Transactional
@Query(value = "BACKUP TO ?1", nativeQuery = true)
int backupDB(String path);
Run Code Online (Sandbox Code Playgroud)