DBF数据表文件的结构分析

DBF文件由两部分组成, 

第一部分是结构描述,即文件头信息;共32个字节(0~31
第二部分是表本身的内容,该部分又分为两个部分:
前一部分是表的结构说明,共32个字节具体的内容见下1

后一部分是字段描述区,从第32个字节开始到十六进制结束字符0x0D。具体包括内容见2

BDF文件头的详细格式:
 

在文件中的位置

内容

说明

0

1个字节

表示当前的版本信息

1-3

3个字节

表示最近的更新日期,按照YYMMDD格式。

4-7

1个32位数

文件中的记录条数。

8-9

1个16位数

文件头中的字节数。

10-11

1个16位数

一条记录中的字节长度。

12-13

2个字节

保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。

14

1个字节

表示未完成的操作。

15

1个字节

dBASE IV编密码标记。

16-27

12个字节

保留字节,用于多用户处理时使用。

28

1个字节

DBF文件的MDX标识。在创建一个DBF 表时 ,如果使用了MDX 格式的索引文件,那么 DBF 表的表头中的这个字节就自动被设置了一个标志,当你下次试图重新打开这个DBF表的时候,数据引擎会自动识别这个标志,如果此标志为真,则数据引擎将试图打开相应的MDX 文件。

29

1个字节

Language driver ID.

30-31

2个字节

保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。

32-X

(n*32)个字节

记录项信息描述数组。n表示记录项的个数。这个数组的结构在表2.8中有详细的解释。

X+1

1个字节

作为记录项终止标识。


DBF文件头中记录项的详细格式:
 

位置

内容

说明

0-10

11个字节

记录项名称,是ASCII码值。

11

1个字节

记录项的数据类型,是ASCII码值。(B、C、D、G、L、M和N,具体的解释见表2.9)。

12-15

4个字节

保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。

16

1个字节

记录项长度,二进制型。

17

1个字节

记录项的精度,二进制型。

18-19

2个字节

保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。

20

1个字节

工作区ID

21-30

10个字节

保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。

31

1个字节

MDX标识。如果存在一个MDX 格式的索引文件,那么这个记录项为真,否则为空。

前32位格式:
00:数据库名称   0x03:foxbase+、foxpro  
              0x83:foxbase+、dbaseIII
01-03:最好更新日期,格式为yymmdd
04-07:记录个数
08-09:字段信息占用的字节数
10-11:记录信息占用的字节数
12-13:保留
14:       dbaseIV标志
15:加密标志
16-27:dBaseIV多用户环境下的用户名称
28:是否存在索引文件
29:dBaseIV语言引擎ID号
30-31:保留
32-n:字段信息
n+1:文件头结束标志0x0d(后面的字节就是记录信息了)

字段信息:
每32字节表示一个字段
0-10:字段名称(ASCII字符,以0x00结束)
11:字段类型
12-15:在记录中的显示位置
16:字段长度
17:小数点位置
18-19:保留
20:dBaseIV工作区ID
21-30:保留
31:该字段是否索引字段

字段类型:
c:字符型
d:日期型号,格式为yyyymmdd
f:float   point
g:通用型
l:逻辑型
m:memo型
n:整形
p:图像
解读:

低字节在前,所以要取字段总数时,应该用如下方法:

记录总数  =  4个字节+256 1次方*5字节+256 2*6字节+256 3*7字节


注意:

字段名     ASCII码方式存放,最大长度是10个字符,若字段名长度少于10个字符则以空字符(0x00)填充

字段类型   ASCII码方式存放,1个字符,其值为

Field type: 

C      Character

Y      Currency

N      Numeric

F      Float

D      Date

T      DateTime

B      Double

I      Integer

L      Logical

M    Memo

G    General

C      Character (binary)

M      Memo (binary)

P      Picture

+      Autoincrement (dBase Level 7)

O      Double (dBase Level 7)

@      Timestamp (dBase Level 7)

 

DBF数据表文件的结构结束标志为"0x0D",占1个字节。对于VFP表文件从"0x0D"所在的字节开始的263B用于描述自由表或数据库表的相关信息(若为自由表则取值全为零)。

VFP表文件长度 = 32(文件头)+32*字段个数+1(结束标志)+263。然后是数据部分记录1、记录2……记录n

各记录均为定长格式,以ASCII码方式顺序存放。每个记录的第一个字节是删除标志,若记录被删除,则该字节为0x2A"*";否则为0x20即空格。

各记录间无分隔符

整个文件的结束标志为0x1A,位于最后一个记录之后的一个字节中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值