联系:手机/微信(+86 17813235971) QQ(107644445)
标题:Firebird 损坏数据库数据抢救工具—firebirdext
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
它是做什么的
firebirdext 是一个针对 Firebird 数据库 .fdb 文件的数据抢救工具。
当数据库文件因为断电、磁盘坏道、误操作、备份中断、病毒查杀等原因损坏,导致数据库无法打开、官方工具 gbak/gfix 也救不回来时,fbrescue 可以绕过数据库引擎,直接以二进制方式解析磁盘文件,把还能找回的数据一页一页”捞”出来——导出成 CSV、SQL 脚本,甚至直接重建一个可用的新数据库。
一句话:引擎打不开的库,它照样能把数据掏出来。
解决什么问题
你可能会遇到这些情况:

工具的信条是宁缺毋滥:损坏到无法确认的行,如实计入”失败”,绝不编造半真半假的数据出来。
核心功能
1. 全景扫描(scan) — 动手之前先看病情
输出每页的类型与归属(哪些表还剩多少数据页、哪些页被毁),立刻知道”还有多少可救”。
firebirdext scan 损坏库.FDB
2. 零配置数据提取 — 不用提供表结构
自动建库、建表、写入数据,产出一个可以正常连接使用的 Firebird 数据库。
firebirdext extract 损坏库.FDB --format db --target 新库.FDB
3. 直接重建新库 — 数据一步到位
自动建库、建表、写入数据,产出一个可以正常连接使用的 Firebird 数据库。
firebirdext extract 损坏库.FDB --format db --target 新库.FDB
4. 对象结构恢复 — 不只救数据,结构也不丢
恢复索引、主键、视图、存储过程、触发器、序列,在数据恢复好的新库上执行一遍,对象全部重建。
5. 单表定向抢救
firebirdext extract 损坏库.FDB --table ORDERS --format db --target 订单.FDB
6. 三种输出格式:csv(Excel 核对)/ sql(INSERT 脚本)/ db(新数据库)。
支持的数据类型
整数、BIGINT、SMALLINT、NUMERIC/DECIMAL(p,s)、FLOAT、DOUBLE、DATE、TIMESTAMP、VARCHAR/CHAR(多字节字符集支持)、BLOB(自动重组内联大对象,实测 4000 字符文本完整还原)
上手:三分钟走完全流程
# 环境:Windows/Linux 均可,Python 3.8+,无需安装任何第三方库 # (只有"直接建新库"功能会调用 Firebird 自带的 isql.exe) # 第 1 步:复制副本(永远不要对原文件操作) copy D:\prod\MYDATA.FDB E:\work\抢救副本.FDB # 第 2 步:诊断,看看能救多少 firebirdext scan E:\work\抢救副本.FDB # 第 3 步:抢救 → 新库 + 对象脚本,一条命令 firebirdext extract E:\work\抢救副本.FDB --format db --target E:\work\恢复库.FDB # 第 4 步:把索引/视图/过程/触发器也建起来 isql -q -b -i E:\work\恢复库_ddl.sql # 第 5 步:连上新库验证数据 isql -q SQL> connect 'E:/work/恢复库.FDB' user 'SYSDBA' password '***'; SQL> select count(*) from 任意表;
适用范围与限制
1).适用 Firebird 3 / 4 / 5(ODS12/13);更老的 2.5 及以前版本需要小幅适配
2).已被物理覆写清零的记录、已被垃圾回收的数据,任何工具都救不回
3).表结构(列类型)依赖文件内的系统表页;如果系统表页也烂光了,可以用 –ddl 手动提供建表语句兜底
4).view、index、trigger等如果字典完善可以恢复
5).外键、CHECK 约束暂无法恢复,后续进行完善

加我微信(17813235971)
加我QQ(107644445)

