2014-09-11 97 views
1

我已经从文件组织软件中遗留了DBF,FPTCDX文件。从CDX和FTP后缀判断,我认为它是一个Visual FoxPro数据库。从第一眼看到DBF文件,它看起来像在那里有field descriptors。我想查看哪些数据存储在那里并使用或提取任何有用的东西。如何从Delphi访问Visual FoxPro表格?

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   [email protected] 
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.错误。

而且,我想:

  • 创建BDE别名与FoxPro驱动
  • 打开任何的数据库DBF文件桌面

双方试图打开一个表导致Corrupt table/index header.错误。

此外,我只是尝试tDBF component,但它看起来被遗弃和加载与Kylix Libc依赖关系,因此不编译德尔福W/O固定。

吨问题:

  • 我如何确认哪些文件是真正的Visual FoxPro?
  • 上述症状是否表示真正的数据损坏或只是不兼容/错误配置?
  • 最后,如何使用现代的东西来访问表格并开始检查数据?
+0

关于第二点 - VFP ODBC驱动程序将打开Visual FoxPro和任何其他版本,直接返回(可能)像dBase和Clipper这样的DOS产品 - 所以如果它窒息,那它更可能是不是实际上是DBF格式,或者是与配置问题相反的损坏。我正在查看字段描述符从哪里开始,对于我来说这对于DBF来说是错误的,它们应该晚点来。 – 2014-09-11 07:46:43

+0

@Alan B,从我拼在一起的字段描述符应该从字节偏移量32开始,这似乎是上面的情况。 (我不是DBF专家) – Lars 2014-09-11 08:32:03

+2

它看起来像它,结构解释[这里](http://msdn.microsoft.com/en-us/library/aa975386%28v=vs.71%29.aspx)。最快的检查是用excel打开.dbf。 – 2014-09-11 08:41:19

回答

3

问:我如何确认哪些文件真的是Visual FoxPro?

根据你的dbf数据转储它似乎是Visual FoxPro。第一个字节的0X31的值根据.dfb表文件结构微软的MSDN文档http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx

有关的文件扩展名

Additionall信息你提到这是Visual FoxPro, autoincrement enabled

  • 的.dbf =数据为定点长度字段。
  • .cdx =化合物索引。
  • .fpt =备注字段,图像和对象的数据。

问:上述症状是否表明真正的数据损坏或只是不兼容/错误配置?

对不起不能帮你在这里...

问:最后,如何用现代的东西来访问表,并开始检查数据?

我以前设法使用Delphi的ADO(dbGo)组件访问dfb文件。我下载了“Microsoft Access数据库引擎2010可再发行版”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 
+1

奇怪,但对我来说,你下载的链接不包含VFPOLEDB,我已经删除它,并在另一个不同的:http://www.microsoft.com/en-us/download/details.aspx? id = 14839 – 2014-09-11 15:57:24

+0

关于过度填充的连接字符串:我有相同的现象,交互构建connstring并得到与您的相同,唯一区别(这是区域,我相信)是CODEPAGE参数。 – 2014-09-11 16:03:27

+0

感谢您的反馈!我很好奇,你能访问yor文件吗? – Lars 2014-09-11 19:26:45

0

你为什么不尝试寻找视觉福克斯临,版本9的副本,看它是否会打开文件。 (UniversalThread具有VFP部分和VFP专家,您可以在此问问题。)

如果您可以在VFP中打开它,则可以将其复制到.CSV或制表符分隔的文件中,然后您应该能够将其导入到任何你想要的系统中。

有时VFP表(.DBF,.CDX,.FPT)被链接到一个“数据库”(容器种类),它扩展了它们的字段名称并添加了诸如触发器之类的东西。查找.DBC文件某处。或者他们可以是独立的。我不确定如果尝试打开VFP表时发生了什么,DBC(数据库容器)的一部分是什么,而您没有可用的容器。

0

如何确认哪些文件是真正的Visual FoxPro?
dbf扩展和第一个字节h31表明它是一个Visual FoxPro表。

上述症状是否表示真正的数据损坏或只是不兼容/错误配置?
Microsoft ODBC驱动程序有一些问题,VisualFoxPro

最后,如何用现代的东西来访问表,并开始检查数据?
我认为最好的方法是使用Vista软件的Apollo数据库引擎。 http://www.apollodb.com/default.asp