2009-11-13 36 views
3

今天我得到了一箇舊系統的副本,我需要從中導入數據。系統用C編寫,並在DOS下運行。它使用某種數據庫。文件格式似乎很簡單(1個文件= 1個表,標題包含一些描述,然後記錄,字段由0個ASCII字符分隔,但並不像看起來那麼簡單)。DOS數據庫 - 幫助需要識別它是什麼

問題是:如何識別使用哪個數據庫?

是否有任何一種軟件可能會打開多種格式?

或者是否有任何軟件可以幫助我?

或指向描述dos數據庫的站點的任何鏈接?

或者只是任何可以幫助將不勝感激:)

PS>我可以,如果有人想嘗試猜測從DB張貼一些小文件。

一個小分貝文件:

http://www.2shared.com/file/9137583/f840f261/WCENNIK.html

+3

該文件的前十二個字節會告訴我我是否可以識別它。但是可能沒有那麼多事情。 – wallyk

+2

什麼是擴展名?使用它的系統的性質是什麼?你有用C編寫的系統的源代碼嗎?你有沒有看過打開數據庫文件的部分的源代碼? – Breton

+0

@ kubal5003,我加入wallyk建議在SO上發佈甚至只有前48或80個字節(作爲HEX轉儲,如在「F0 12 34 B1 ...」中),這將大大增加識別格式(甚至可以指出這不屬於的格式,因此有助於修剪您的搜索) – mjv

回答

1

大多數使用專有(即,非標)格式的那些年長平面文件的應用程序。如果數據庫是標準格式,您應該在標題附近看到某種標識符,告訴它它是什麼。

如果您無法通過在十六進制編輯器中查看文件來確定格式,最好的方法是跟蹤讀取每條記錄並對其格式進行逆向工程的C代碼。

+0

我在看20世紀80年代寫的dBase文件傾翻器。我希望在頭部的某個地方看到「DBF」。沒有這樣的事情。它只是從版本號開始,然後進入最後一次更新時間戳,記錄數量,記錄長度等。 – wallyk

+0

Ah,dBase。還有對Paradox的甜蜜回憶......(顫抖) –

2

幾乎包括Linux和Mac OS在內的所有Unix版本都有一個名爲「file」的命令,它可以根據內容識別大量的文件類型。嘗試將其中一個數據文件複製到Mac OS或Linux計算機,然後從命令行運行

file [filename] 

+0

這是非常值得嘗試的麻煩,但是現在我反思一下,那個時代的文件中存在很少的模式,文件命令可以知道,更不用說檢查了。以這種方式識別舊的MSDOS .COM文件幾乎是不可能的。它只是從指令開始 - 沒有標題,沒有容器 - 什麼都沒有。我相信文件擴展名在那些日子裏對聲明文件類型非常重要。 – wallyk

+0

我會試一試,但這可能沒有多大幫助,因爲這些擴展名可能是波蘭語「baz」,可能意味着「baza」==「數據庫」和ind - 「indeks」==「索引」 – kubal5003

+0

嘗試過它在Debian上,「文件」不承認它。 – NXT

1

聽起來像一個dBase文件給我。他們很常見。 DBF不需要出現在標題中。看到這裏的格式描述:

http://www.dbase.com/knowledgebase/int/db7_file_fmt.htm

編輯更好的鏈路

http://www.clicketyclick.dk/databases/xbase/format/

什麼是第一個字節的值?

我只是再次檢查了一些我手邊有的DBF文件,它們在頭文件中沒有DBF。

+0

不幸的是,我不會立刻就認出來,那是我的第一個想法。 – kubal5003

+0

我調查了您發佈的鏈接,可能確實如此。我正在考慮從Windows中知道的dBase,但是我發現它遠不止於此。 – kubal5003

+1

我不認爲這是dBase。我在上面發佈了另一個更好的鏈接。 幸運的是,在C中編寫解碼器看起來非常容易。提示:字節2(0x52)看起來像記錄長度2,我猜測0x90 0xAD是記錄分隔符。 – NXT

0

原始應用程序是否有功能?捅一下,你可能會找到一種導出數據的方法。另一個嘗試是將應用程序報告「打印」爲文本文件。

+0

請分享更多詳情。謝謝 – Saadi

+0

Srsly?這是8年前的一個線索,對於目前的SO標準應該可能會被抹殺。 – kubal5003