[转]DBF文件格式
DBF的文件格式:
文件头 |
记录1 |
记录2 |
记录3 |
… |
… |
… |
记录n |
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 格式的索引文件,那么这个记录项为真,否则为空。 |
DBF文件中的数据类型:
代码 |
数据类型 |
允许输入的数据 |
B |
二进制型 |
各种字符。 |
C |
字符型 |
各种字符。 |
D |
日期型 |
用于区分年、月、日的数字和一个字符,内部存储按照YYYYMMDD格式。 |
G |
(General or OLE) |
各种字符。 |
N |
数值型(Numeric) |
- . 0 1 2 3 4 5 6 7 8 9 |
L |
逻辑型(Logical) |
? Y y N n T t F f (? 表示没有初始化)。 |
M |
(Memo) |
各种字符。 |
举例说明:
假如文件中有10条记录,每个记录有4个字段,4个字段的长度分别为:12、14、16、18,那么文件的详细格式如下:
文件头占32+32*4+2个字节:
前32个字节是文件头中的基本信息,32*4个字节是记录项(即字段的定义信息),最后两个字节分别是16进制的0D 和20,0D代表上文表格中说明的记录项终止标识。20代表一个空格。
数据信息占(12+14+16+18)*10+1个字节:
12+14+16+18个字节代表一条记录,共10条记录。最后一个字节是数据的终止表示通常是16进制表示的1A
补充说明:
由于上述文件格式的定义,决定了字段名称不能超过11个字节(或者5个中文字符),字符类型的字段,数据最大不能超过255个字节。在从文本、Excel、大型数据库导出数据到DBF格式文件时,一定要考虑到这些长度限制。