You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从.backup等文件恢复HSQLDB数据库并提取解密PDF

HSQLDB数据恢复及PDF提取解密操作指南

操作前准备

  • 对应版本的HSQLDB运行jar包(版本可从.properties文件的version字段获取)
  • PDF解密工具(推荐qpdf,无需额外依赖)
  • 数据库连接工具(可选,如DBeaver、SQuirreL SQL,也可直接用JDBC代码操作)

步骤1:恢复HSQLDB数据库

  • 将你持有的.backup、.data、.properties、.script四个文件放入同一个空文件夹,确保四个文件的文件名前缀完全一致,例如统一为mydb的话,四个文件名为mydb.backup、mydb.data、mydb.properties、mydb.script
  • 使用文件模式连接HSQLDB,为避免修改原始文件建议开启只读模式,JDBC连接URL格式为:
    jdbc:hsqldb:file:/你的文件夹绝对路径/文件名前缀;readonly=true
  • 用数据库连接工具或代码执行测试查询,确认可以正常读取库中所有表和数据,即恢复成功

步骤2:提取库中加密PDF文件

  • 先查找存储PDF二进制内容的字段,PDF一般以BLOB类型存储,可执行如下SQL定位对应字段:
    SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'BLOB'
  • 找到对应存储表后,若不知道PDF的打开密码,可先在同表的其他字段中查找关联的密码信息,数据库中已包含所有相关配置
  • 提取BLOB字段内容保存为后缀为.pdf的本地文件:
    • 用可视化数据库工具操作的话,直接右键查询结果中的BLOB字段值,选择「保存为文件」即可导出
    • 用Java代码提取的核心逻辑参考:
      // rs为查询对应表返回的结果集对象
      InputStream pdfBinaryStream = rs.getBinaryStream("存储PDF的BLOB字段名");
      Files.copy(pdfBinaryStream, Paths.get("本地保存路径/导出文件名.pdf"), StandardCopyOption.REPLACE_EXISTING);
      

步骤3:加密PDF转非加密格式

  • 使用qpdf工具执行解密操作,无打开密码的PDF执行命令:
    qpdf --decrypt 待解密的PDF路径.pdf 解密后输出路径.pdf
  • 有打开密码的PDF执行命令,将你的PDF密码替换为实际密码即可:
    qpdf --password=你的PDF密码 --decrypt 待解密的PDF路径.pdf 解密后输出路径.pdf
  • 打开输出的PDF文件验证,确认无加密限制、内容正常即可

注意事项

  • 若HSQLDB连接时出现版本不兼容报错,必须下载和.properties文件中记录的版本完全一致的HSQLDB jar包再尝试连接
  • 全程建议以只读模式连接数据库,避免误操作损坏原始的四个数据库文件
  • 解密PDF请确保你对对应文件拥有合法操作权限,遵守所在地相关法律法规

内容的提问来源于stack exchange,提问作者jambai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:54:04