繁体   English   中英

如何使用 H2 在 JPA 中运行导入的 sql 脚本?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM