【发布时间】:2014-09-11 02:35:37
【问题描述】:
我从文件组织软件中收集了 DBF、FPT 和 CDX 文件的旧集合。从 CDX 和 FTP 后缀来看,我推测它是一个 Visual FoxPro 数据库。乍一看 DBF 文件,它看起来好像有field descriptors。我想检查那里存储的数据并使用或提取任何有用的东西。
00000000: 31 0B 06 0E-2F 00 00 00-08 02 28 01-01 00 00 01 1/ (
00000010: 00 00 00 00-00 00 00 00-00 00 49 40-01 7F 00 00 I@
00000020: 4E 41 4D 45-00 00 00 00-00 00 00 43-01 00 00 00 NAME C
00000030: FF 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
00000040: 43 41 54 5F-52 4F 4F 54-49 44 00 42-00 01 00 00 CAT_ROOTID B
00000050: 08 00 04 00-00 00 00 00-00 00 00 00-00 00 00 00
00000060: 50 52 4E 54-5F 49 44 00-00 00 00 42-08 01 00 00 PRNT_ID B
00000070: 08 00 04 00-00 00 00 00-00 00 00 00-00 00 00 00
00000080: 41 54 54 52-49 42 53 00-00 00 00 49-10 01 00 00 ATTRIBS I
00000090: 04 00 04 00-00 00 00 00-00 00 00 00-00 00 00 00
000000A0: 49 53 5F 45-58 43 4C 55-44 45 00 49-1A 01 00 00 IS_EXCLUDE I
000000B0: 04 00 04 00-00 00 00 00-00 00 00 00-00 00 00 00
000000C0: 43 41 54 5F-49 44 00 00-00 00 00 42-1E 01 00 00 CAT_ID B
000000D0: 08 00 0C 00-00 00 00 00-00 00 00 00-00 00 00 00
000000E0: 54 53 00 00-00 00 00 00-00 00 00 37-26 01 00 00 TS 7&
000000F0: 08 00 14 00-00 00 00 00-00 00 00 00-00 00 00 00
到目前为止我尝试了什么:
-
将开箱即用的 Windows 7 ODBC 驱动程序存根升级到版本 6.01.8629.01
-
将用户 DNS 创建为“免费表目录”并将其路径指向文件集合
-
在各种工具(如 SQL Explorer 和 SQL Server 导入/导出向导)中没有列出该 OBDC DNS 的表。
-
手动尝试
SELECT * FROM任何DBF 文件都会给我[Microsoft][ODBC Visual FoxPro Driver]Not a table.错误。
另外,我试过了:
- 使用 FOXPRO 驱动程序创建 BDE 别名
- 在 Database Desktop 中打开任何 DBF 文件
两次打开表的尝试都导致了Corrupt table/index header. 错误。
另外,我刚刚尝试了tDBF component,但它看起来被遗弃并加载了 Kylix Libc 依赖项,因此无法在 Delphi 中编译而没有修复它。
大量问题:
- 如何确认哪些文件是真正的 Visual FoxPro?
- 上述症状是否表明实际数据损坏或只是不兼容/配置错误?
- 最后,如何使用现代的东西来访问表并开始检查数据?
【问题讨论】:
-
关于第二点 - VFP ODBC 驱动程序将打开 Visual FoxPro 和任何其他版本(可能)回到 dBase 和 Clipper 等 DOS 产品 - 所以如果它像那样窒息,它更有可能要么不是真正的 DBF 格式,要么是损坏而不是配置问题。我正在查看字段描述符从哪里开始,对我来说这对 DBF 来说是错误的,它们应该稍后出现。
-
@Alan B,从我拼凑的内容来看,字段描述符应该从字节偏移量 32 开始,这似乎是上面的情况。 (我不是 DBF 专家)
-
看起来像,结构解释here。最快的检查是用excel打开.dbf。
-
@Sertac Akyuz +1 for Excel,亲爱的!
标签: database delphi foxpro dbf visual-foxpro