2014-09-11 92 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