我想用H2数据库引擎构建一个Web应用程序。不过看完这个教程我还是不知道如何在数据库运行时备份数据:
http://www.h2database.com/html/tutorial.html#upgrade_backup_restore
H2是否将其存储的文件输出到文件系统中的某个位置?我可以只备份输出的文件吗?
H2 存储在文件系统上,但最好使用您引用的备份工具,因为文件格式可能会在 H2 版本之间发生变化。如果您升级 H2,它可能无法再读取在先前版本中创建的文件。另外,如果你复制它使用的文件,我建议先关闭数据库,否则复制的文件可能无法被H2读取。
文件的位置取决于您指定的 jdbc url。请参阅常见问题解答: http://www.h2database.com/html/faq.html
感谢 Jus12 的好回答。我将其改编为 Spring Data 中的 JPARepositories,并想在这里分享它,因为我在网上找不到类似的答案:
@Modifying
@Transactional
@Query(value = "BACKUP TO ?1", nativeQuery = true)
int backupDB(String path);
try {
Class.forName("org.h2.Driver");
Connection con = DriverManager.getConnection("jdbc:h2:"+"./Dbfolder/dbname", "username", "password" );
Statement stmt = con.createStatement();
con.prepareStatement("BACKUP TO 'backup.zip'").executeUpdate();
} catch(Exception ex) {
JOptionPane.showMessageDialog(null, ex.toString());
}