我有一个从文件组织软件遗留下来的DBFFPTCDX文件的遗留集合。从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/

10-11 03:51