我有一个从文件组织软件遗留下来的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创建为“free tables directory”,并将其路径指向文件集合
在各种工具(如SQL资源管理器和SQL Server导入/导出向导)中,没有列出该OBDC DNS的表。
手动尝试
SELECT * FROM
任何dbf文件都会产生[Microsoft][ODBC Visual FoxPro Driver]Not a table.
错误。另外,我试着:
用foxpro驱动程序创建bde别名
在数据库桌面中打开任何dbf文件
两次试图打开表都导致了
Corrupt table/index header.
错误。此外,我只是尝试了“AA>”,但是它看起来是废弃的,并且加载了Kylix
Libc
依赖关系,因此不在Delphi W/O中编译。一大堆问题:
如何确认哪些文件是真正的visual foxpro?
上面描述的症状是否表明真实的数据损坏或只是不兼容/配置错误?
最后,如何使用现代化的工具访问表并开始检查数据?
最佳答案
问:如何确认哪些文件是真正的visual foxpro?
基于您的dbf数据转储,它似乎是visual foxpro。第一个字节的值为0x31,根据Microsoft的msdn文档中的.dfb表文件结构http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
有关您提到的文件扩展名的其他信息:
.dbf=固定长度字段的数据。
.cdx=复合索引。
.fpt=备注字段、图像和对象的数据。
问:上述症状是否表明真实的数据损坏或只是不兼容/配置错误?
对不起,在这里帮不了你…
问:最后,如何使用现代化的工具访问表并开始检查数据?
我以前使用delphi的ado(dbgo)组件访问过dfb文件。我下载了“Microsoft Access Database Engine 2010 Redistributable”http://www.microsoft.com/en-us/download/confirmation.aspx?id=13255中包含的FoxPro OLE DB提供程序。
初始连接字符串如下所示:
Provider=VFPOLEDB.1;Data Source=[MY_FOXPRO_DIR_PATH];Password="";Collating Sequence=MACHINE
当我研究我的代码时,我使用了一个更长的代码,不幸的是没有任何注释说明原因。不管怎样,我还是要扔进去:
Provider=VFPOLEDB.1;Data Source=[MY_FOXPRO_DIR_PATH];Mode=Share Deny None;Extended Properties="";User ID="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN="";DELETED=True;CODEPAGE=1252;MVCOUNT=16384;ENGINEBEHAVIOR=90;TABLEVALIDATE=3;REFRESH=5;VARCHARMAPPING=False;ANSI=True;REPROCESS=5
关于database - 如何从Delphi访问Visual FoxPro表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25778170/