尝试读取原始数据库文件

时间:2018-10-29 22:27:17

标签: database character-encoding hex flat-file ctree

我正在尝试从数据库文件(员工c树数据结构)中读取数据。这是一个非常古老的产品,由于各种原因,我不再可以使用ODBC驱动程序。

我发现,数据基本上只是逐行的“平面文件”。因此,我的计划是简单地从文件中读取原始二进制数据,并有效地构建我自己的定制ODBC。

使用c-tree公司本身提供的工具,我什至可以获取每个字段地址(即它的起始位置),其长度(字节数组的长度)和我假设实际上是在告诉我字段的编码方式(见下文):

ADDRESS  LENGTH  TYPE(encoding?)        FIELD NAME
0        8       (128-0x80) CT_ARRAY    Reserved
8        4       (59-0x3B) CT_INT4U     Record_ID
12       2       (41-0x29) CT_INT2U     Type
14       2       (41-0x29) CT_INT2U     Changes
16       52      (144-0x90) CT_FSTRING  Name

我是否正确假设像“(128-0x80)”这样的东西应该是我需要将字段解码为实际文本的唯一信息?还是有可能我在这里不考虑进一步的加密?

有人还能告诉我“(128-0x80)”到底是什么吗?我将0x80识别为十六进制,但是128是什么意思?至少使用某种术语来描述这件事,我可以做更多的谷歌研究。

谢谢!

1 个答案:

答案 0 :(得分:0)

这种类型的编码纯粹是内部的,作为我们对该数据类型的字节值表示。

例如:80x(十六进制)= 128(十进制)=数据类型CT_ARRAY,其他类型也是如此。

地址长度类型(编码?)字段名称

0 8(128-0x80)CT_ARRAY保留

8 4(59-0x3B)CT_INT4U记录ID

12 2(41-0x29)CT_INT2U类型

14 2(41-0x29)CT_INT2U更改

16 52(144-0x90)CT_FSTRING名称

您可以在以下文档中在线查看数据类型说明:https://docs.faircom.com/doc/ctreeplus/28396.htm

这可能是固定长度的记录。可变长度记录将在每个记录上包含一个10字节的标头,需要加以说明。同样,这似乎是一个1字节或2字节(16位应用程序)的打包对齐数据记录,应始终予以考虑。其他C结构编译器定义的路线会使数据提取复杂化。

“保留”字段可以只是我们的1字节已删除记录标记和已删除记录堆栈值的占位符标记(也在我们的文档中进行了描述)。但是,它也可以包含仅与该应用程序相关的特定于应用程序的数据,因为它是8字节长。

不应对数据进行其他加密或编码(肯定没有Unicode)。

不幸的是,该ODBC驱动程序已停产。您可以通过一种方法轻松地提取c-treeACE数据库中想要的所有数据,但是您需要联系FairCom支持以获取更多信息。支持链接为faircom.com/support