什么是一 .dbf 文件?
扩展名为 .dbf 的文件是数据库管理系统应用程序使用的数据库文件,名为 dBASE。最初,dBASE 数据库被命名为 Project Vulcan。由 Wayne Ratliff 于 1978 年开始。DBF 文件类型是在 1983 年随 dBASE II 引入的。它使用 Array 类型字段排列多个数据记录。 xBase 数据库软件,因其与多种文件格式的兼容性而广受欢迎;还支持 DBF 文件。
DBF 文件格式
DBF 文件格式属于 dBASE 数据库管理系统,但它可能与 xBase 或其他 DBMS 软件兼容。 dbf 文件的初始版本由一个简单的表组成,可以使用 ASCII 字符集添加、修改、删除或打印数据。随着时间的推移,.dbf 得到了改进,并添加了其他文件以增加数据库系统的特性和功能。
在现代 dBASE 中,DBF 文件由标题、数据记录和 EOF(文件结束)标记组成
- 标头包含有关文件的信息,例如记录数和记录中使用的字段类型数。
- 记录包含实际数据。
- 文件的结尾由一个字节标记,值为 0x1A。
文件头
dBase 中文件头的布局如下表所示:
字节 | 目录 | 含义 |
---|---|---|
0 | 1 个字节 | DOS 文件的有效 dBASE;位 0-2 表示版本号,位 3 表示存在 dBASE for DOS 备忘录文件,位 4-6 表示存在 SQL 表,位 7 表示存在任何备忘录文件(dBASE m PLUS 或 dBASE for DOS) |
1-3 | 3 个字节 | 上次更新日期;格式为 YYMMDD |
4–7 | 32 位数字 | 数据库文件中的记录数 |
8–9 | 16 位数字 | 标头中的字节数 |
10-11 | 16 位数字 | 记录中的字节数 |
12-13 | 2 个字节 | 预订的;填充 0 |
14 | 1 个字节 | 表示交易不完整的标志[注1] |
15 | 1 个字节 | 加密标志[注2] |
16–27 | 12 字节 | 为多用户环境中 DOS 的 dBASE 保留 |
28 | 1 个字节 | 生产 .mdx 文件标志; 1 如果有生产 .mdx 文件,0 如果没有 |
29 | 1 个字节 | 语言驱动程序 ID |
30–31 | 2 个字节 | 预订的;填充 0 |
32–n [注 3][注 4] | 每个 32 字节 | 字段描述符数组(描述符布局见下文) |
n + 1 | 1 个字节 | 0x0D 作为字段描述符数组终止符 |
- ISMARKEDO 函数检查此标志(BEGIN TRANSACTION 将其设置为 1,END TRANSACTION 和 ROLLBACK 将其重置为 0)。
- 如果此标志设置为 1,则会出现消息数据库已加密。
- 最大字段数为 255。 -n 表示字段描述符数组中的最后一个字节。
字段描述符数组
dBASE 中字段描述符的布局:
字节 | 目录 | 含义 |
---|---|---|
0–10 | 11 字节 | ASCII 格式的字段名称(零填充) |
11 | 1 个字节 | 字段类型。允许值:C、D、F、L、M 或 N(含义见下表) |
12-15 | 4 个字节 | 保留 |
16 | 1 个字节 | 二进制字段长度(最大 254 (0xFE))。 |
17 | 1 个字节 | 二进制字段十进制计数 |
18-19 | 2 个字节 | 工作区号 |
20 | 1 个字节 | 示例 |
21–30 | 10 字节 | 保留 |
31 | 1 个字节 | 生产 MDX 字段标志;如果字段在生产 MDX 文件中具有索引标记,则为 1,如果没有,则为 0 |
数据库记录
每条记录都以删除(1 字节)标志开始。字段被包装到没有字段分隔符的记录中。所有字段数据都是 ASCII。根据字段的类型,应用程序会施加更多限制。以下是 dBase 中的字段类型:
字段类型 | 助记符 | 它接受什么 |
---|---|---|
C | 性格 | 任何 ASCII 文本(用空格填充,直到字段的长度) |
D | 日期 | 用于分隔月、日和年的数字和字符(内部存储为 YYYYMMDD 格式的 8 位数字) |
F | 浮点数 | -, ., 0–9(右对齐,用空格填充) |
大号 | 逻辑 | Y、y、N、n、T、t、F、f 或 ? (未初始化时) |
中号 | 备忘录 | 任何 ASCII 文本(内部存储为代表 .dbt 块编号的 10 位数字,右对齐,用空格填充) |
N | 数字 | -, ., 0–9(右对齐,用空格填充) |