[英]How to run an imported sql script in JPA using H2?
我正在开发一个 JPA 应用程序,它使用 H2 作为数据库。 我想创建一个备份(导出为 sql 文件)并从 Web 界面导入一个备份。
备份sql文件的创建和sql文件的上传正在工作,但我无法让entityManager正确执行导入的sql文件。
我尝试从导入的 sql 创建一个文件,然后按如下方式运行它:
public void applyBackup() {
em.flush();
Query query = em.createNativeQuery("DROP ALL OBJECTS");
query.executeUpdate();
query = em.createNativeQuery("RUNSCRIPT FROM 'backup.sql'");
query.executeUpdate();
}
这里的问题是,我从导入的 sql 创建的文件位于服务器文件夹中,而 RUNSCRIPT 查询尝试从项目文件夹中运行它。
我的第二次尝试是将 sql 解析为字符串,然后将其作为 sql 命令执行:
public void applyBackup(String sqlStr) {
em.flush();
Query query = em.createNativeQuery("DROP ALL OBJECTS");
query.executeUpdate();
query = em.createNativeQuery(sqlStr);
query.executeUpdate();
}
这在执行过程中不会引发异常,但是当我尝试从数据库中获取数据时,它说找不到表 xy。
要创建备份,我使用以下查询:
Query query = em.createNativeQuery("SCRIPT TO 'backup.sql'");
如上所述这里。
我用 Scanner 解析了 UploadedFile 文件的 InputStream,这弄乱了 SQL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.