2

大家早,

我已经告诉客户我可以将他们的一些旧数据从基于 DOS 的系统迁移到我为他们开发的新系统中。但是我说,没有真正查看在旧系统中存储数据的文件 - 我只是认为快速谷歌会为我解决所有问题......我错了!

无论如何,这个程序有一个文件夹,里面有数百个......以及 800 个文件,有各种文件扩展名,.ave、.bak、.brw、.dat、.001、.002....、.007、.dbf、 .dbe 和 .his。

.Bak 显然不是 SQL 备份文件。

有没有人有任何使用这些文件类型的编程经验,他们可能会指出我以某种方式读取和提取数据的方向?

我不能提及程序名称,因为我认为原始开发人员不会允许这样做......

谢谢。

4

13 回答 13

8

我敢打赌 .dbf 文件是DBase 格式,这非常简单。其中的内容可能会为其他人提供线索。

于 2009-02-28T10:54:08.560 回答
5

unix“文件”实用程序可用于通过“幻数”识别许多文件类型。它检查文件的内容并将其与数千种已知格式进行比较。如果文件是任何一种通用格式,这可能会为您节省大量工作。

如果它们不是通用格式,它可能会让您追逐红鲱鱼。就拿它的建议,建议。

于 2009-02-28T13:22:47.767 回答
3

可以是任何东西。最好是用十六进制编辑器打开,看看你能看到什么

大多数旧系统使用基本 ISAM,每个表有一个文件,其中包含一组固定长度的数据记录。其他文件可能是索引

由于您只需要数据而不是索引,因此只需查找具有重复数据模式的文件(它通常看起来像十六进制编辑器屏幕上的漂亮模式)

当您找到包含数据的文件时,请尝试查找已知记录,例如“史密斯先生”,看看您是否可以计算出其他字段。整数通常是逐字节的,日期通常是编码的,从已知开始日期算起的天数,钱可能是 BCD

如果您看到一个强模式,那么很可能每条记录都是固定长度的。文件上可能会有一个标题块,比如 128 或 256 字节,然后是固定长度的记录

许多旧系统是用 COBOL 编写的。网上有很多关于 cobol 格式的信息,有些公司甚至出售 COBOL ODBC 驱动程序!

于 2009-02-28T13:15:25.787 回答
3

作为对GregDmitriy建议的站点的补充,还有位于http://www.wotsit.org的文件格式存储库(“它的格式是什么?”)。

如果这没有帮助,一个好的十六进制编辑器(带有转储显示)是你的朋友......我总是发现阅读和识别许多文件格式是多么容易令人惊讶。

于 2009-02-28T14:07:58.157 回答
2

我认为 Greg 对 .dbf 文件的看法是正确的。您应该尝试使用http://fileext.comhttp://dotwhat.net等网站查找有关其他文件格式的一些信息。.bak 文件通常是另一个具有相同名称但扩展名不同的文件的副本。例如,可能有 database.dbf 文件和 database.bak 文件及其备份。您应该询问(如果可能的话)使用您客户的文件的应用程序的任何详细信息/文档/源代码。

于 2009-02-28T11:04:09.223 回答
1

回到 DOS 时代,程序员过去常常按照他们认为合适的方式编写自己的文件扩展名。DBF 很可能是一个易于阅读的 DBase 文件,而 .BAK 可能是其他重要文件之一的备份,或者只是文本编辑器留下的备份。

对于剩下的文件,我要做的第一件事是通过在文本编辑器中打开它们来检查它们是否是可读的 ASCII 格式。

如果这不能给您带来好的结果,请尝试在二进制编辑器中打开它们,该编辑器并排显示十六进制和 ASCII,控制字符为空白。寻找可能对应于记录字段的重复模式。例如,假设 .HIS 类似于订单历史文件,它可能包含嵌入的产品代码或名称。如果是这种情况,请计算这些字段之间的字节数。如果它是一个常规数字,您可能有一个扁平的二进制记录文件。最好通过在应用程序中打开文件、在给定记录中查找值并在二进制文件中搜索相应值来解码。费时费力,而且很麻烦,但是一旦掌握了窍门,就足够了。

快乐黑客!

于 2009-02-28T11:16:48.427 回答
1

.DBF 是 dBASE 或早期 FoxPro 数据库。

Btrieve 使用 .DAT,DOS 使用 IIRC Paradox。

.DBE 和 .00x 文件可能是与 .DAT 文件相关的临时文件或索引文件。

.DBF 很简单。它们将使用 MS Access 或 Excel(无论如何是 2007 之前的 Office 版本)或使用 ADO 或 ODBC 打开。

如果 .DAT 文件确实是 Btrieve,那么您将处于一个受伤的世界。它们是一团糟,即使您可以获得正确版本的数据字典和 Btrieve 结构的副本。(到过那里,完成了,在我完成之前把 T 恤穿坏了。)

于 2009-02-28T16:01:24.547 回答
0

正如其他人所建议的那样,如果您无法弄清楚这些文件是什么并且 dbf 可能是 Dbase,我推荐使用十六进制编辑器。

BAK 似乎是一个备份文件。我认为 *.001、*.002 等可能是备份的一部分。它们的大小都一样吗?也许备份被分解成更小的部分,以便可以放入可移动媒体?

最后,把它当作人生的一课。在发送该工作说明书之前,如果客户要求您将数据从系统 A 导入系统 B,请始终要求提供示例架构和示例数据和示例文件。很多时候,看似直截了当的事情变成了噩梦。

祝你好运!

于 2009-02-28T14:27:16.597 回答
0

请务必使用文件上的修改日期作为线索,如果 .001、.002 等都具有相似的时间戳,可能与 .BAK 一起,它们可能是备份的一部分。此外,您可以(在某种程度上安全地)忽略目录中的一些旧内容。寻找 .BAT 文件并尝试剖析它们。

于 2009-02-28T15:29:45.013 回答
0

一个提示,如果 .dbf 文件是 DBase、FoxPro 或使用该格式的其他产品之一。然后您可以使用 ODBC 读取它们。我的系统仍然有 .dbf 的 ODBC 驱动程序(Vista,带有 VS 2008 - 它是如何到达那里的,我必须寻找它,但我猜是 MDAC Microsoft Data Access 把它放在那里)。因此,如果 ODBC 驱动程序将读取 .dbf 文件,您可能不会有一个“无所事事的世界”。

我似乎记得(对 20 多年前的 DBase III 修补有点信心)DBase 使用 .001、.002、... 文件作为备忘录(大文本)字段。

祝你好运试图挽救数据。

于 2009-03-01T05:03:00.487 回答
0

DBF 格式相当普遍。

其他文件令人费解。我猜你要么正在处理旧的 BTrieve 文件(坏),要么(希望)有一些构思不当的备份方案的结果,其中有人将他的数据库备份到同一目录而不是硬盘驱动器中如果你可以忽略这些。

于 2009-03-01T06:11:00.403 回答
0

它现在是 Pervasive 的一部分,但几年前我使用 Data Junction 将数据从许多文件类型迁移到其他文件类型。看看,除非你想写一个解析器。

于 2009-03-01T17:55:30.600 回答
0

.dat 也可以是旧的 Clarion 2.1 文件...它也可以在 ISAM 基础上使用,带有键/索引文件

于 2009-03-25T13:34:35.500 回答