DBF文件格式是一种比较“古老”的数据库文件格式了。要不是最近项目中需要,笔者恐怕到今天也不曾听说过DBF文件格式。

作用:DBF数据库格式是DOS系统中的dBase数据库和FoxPro数据库所使用的数据库格式。如今,如果电脑上没有安装这两款软件,可以使用Excel打开。

数据结构
1. 数据文件.DBF结构分析 

数据库文件由头记录(header record)和数据记录(data record)两个部分组成。头记录从文件位置0开始,定义数据库的结构及其它与数据库有关的信息;数据记录紧接在头记录后面,包含了字段的实际文本内容。 

1.1. 头记录结构描述 

字节00:数据库文件开始及文件类型标志,对应值如下: 

0x02   FoxBASE文件,无备注字段 

0x03   FoxBASE+/dBASE   III   PLUS文件,无备注字段 0x30   Visual   FoxPro数据表文件 

0x43   dBASE   IV   SQL表文件,无备注字段 0x63   dBASE   IV   SQL系统文件,无备注字段 

0x83   FoxBASE+/dBASE   III   PLUS文件,有备注字段 0x8B   dBASE   IV文件,有备注字段 

0xCB   dBASE   IV   SQL表文件,有备注字段 0xF5   FoxPro   2.x(或以前版本)文件,有备注字段 0xFB   FoxBASE文件,有备注字段 

字节01-03:最近一次更新的时间(YYMMDD)。 字节04-07:数据库文件记录的数目。 

字节08-09:第一个数据记录的位置,等于头记录所占的长度。 

字节10-11:每个记录的长度(包括删除标志),等于所有字段宽度之和再加1。 字节12-27:保留,为0x00。 

字节28-29:保留(VFP中已定义为数据表标志和代码页标志)。 字节30-31:保留。 

字节32-n:字段子记录(field   subrecord)。 字节n+1:头记录结束标志0x0D。 

(在VFP中,字节n+2-n+264还包含有.DBC文件路径的相关信息。) 

1.2. 字段子记录结构描述 

头记录第08-09字节指示了数据记录的开始位置,每个数据记录以删除标志开始(0x20或0x28),删除标志后面是记录的具体内容。

字段描述信息从文件第32字节开始,每个字段占32个字节。 

字节00-10:字段名,为ASCII字符串;字段名长度不足10个字符时,以空字符(0x00)填充。 

字节11:字段类型,以大写字母的ASCII码形式存储。 

字节12-15:该字段在数据记录中的偏移值(displacement),等于该字段为止所有字段宽度之和;第一个字段为1(即删除标志所占的一个字节),其它字段该值等于上一字段的值加上本字段的宽度。 字节16:本字段的宽度(字节数)。 

字节17:数字型、浮点型、双精度型字段的小数位宽度。 字节18-31:保留。(字节18在VFP中已被定义为字段标志) 

1.3. 数据记录内容 

除Genral、Picture等类型的字段以外,其它数据字段的实际体内容都是以ASCII码文本形式存储的,如数字型的4存储为0x34。 

1.4. 数据库文件结束标志 

在所有数据记录内容之后,是数据库文件的最后一个字节,即文件结束标志0x1A。

1.5DBF文件中的数据类型:

代码 数据类型 允许输入的数据

C字符型 各种字符。

D日期型 用于区分年、月、日的数字和一个字符,内部存储按照YYYYMMDD格式。

N数值型(Numeric) - . 0 1 2 3 4 5 6 7 8 9

L逻辑型(Logical) ? Y y N n T t F f (? 表示没有初始化)。

M(Memo) 各种字符。

I 整型(Integer) 整型数据只用来表示整数,以二进制形式存储,占用4个字节。其取值范围是:-21474836~21474836。