gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:12:00 25 4
gpt4 key购买 nike

我正在开发一个使用 H2 作为数据库的 JPA 应用程序。我想创建一个备份(导出为 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'");

如上所述here .

最佳答案

我用扫描器解析了UploadedFile文件的InputStream,这搞乱了SQL。

关于java - 如何使用 H2 在 JPA 中运行导入的 sql 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60453001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com