`
yuanlanxiaup
  • 浏览: 859732 次
文章分类
社区版块
存档分类
最新评论

DBF文件格式说明

 
阅读更多

DBF文件格式说明

DBF文件是一种以二进制进行存储的表格数据文件,其文件内部有着严格的格式要求,具体由文件头和记录项组成。其中文件头中包括字段的相关信息。DBF文件的数据结构如下表所示:

组成

内容

位置(Byte)

说明

文件头

文件头定义

0-31

包括版本信息、更新时间、记录条数、文件头长度等

字段1定义

32-64

字段名称、类型、字段长度(Byte)、精度等

字段2定义

65-97

同上

……

同上

字段n定义

-n*32+31

同上

值为0x0D

n*32+32

表示终止字段定义

表格记录数据

第1行数据

n*32+33-X

表示第1行数据

第2行数据

表示第2行数据

……

注意,在表格记录数据中每行数据具体占多长字节,这个由文件头中定义的字段数目以及字段长度来决定,如果该文件一共只有两个字段,其中第一个字段为数值,其长度为4,第二个字段为字符串,长度为50,则每一行数据占的字节长度为4+50=54,在读取数据时也是读取前4个为第一个字段对应的值,读取第5-54个为第二个字段对应的值。

另外,为便于理解表格与下面内容的关系,特说明字段即是指表格中的列,记录指表格中的行数据,DBF按行数据方式来存储,即在文件头中定义了列数、列的名称、列的数据类型、列长度等等,然后在后面的记录数据中插入每行数据。

文件头中格式及说明如下:

位置

类型

说明

0

1个字节

表示当前的版本信息:

  • 0x02 FoxBASE
  • 0x03 FoxBASE+/Dbase III plus, no memo
  • 0x30 Visual FoxPro
  • 0x31 Visual FoxPro, autoincrement enabled
  • 0x43 dBASE IV SQL table files, no memo
  • 0x63 dBASE IV SQL system files, no memo
  • 0x83 FoxBASE+/dBASE III PLUS, with memo
  • 0x8B dBASE IV with memo
  • 0xCB dBASE IV SQL table files, with memo
  • 0xF5 FoxPro 2.x (or earlier) with memo
  • 0xFB FoxBASE

1-3

3个字节

表示最近的更新日期,按照YYMMDD格式,以1900年为起始,即第一个字节表示文件最后保存时的年份-1900,第二个字节的值为保存时的月,第三个字节的值为保存时的日。

4-7

Int32

文件中的记录条数,即表格的行数。

8-9

Int16

文件头中的字节数,在此之后的字节为表格记录数据

10-11

Int16

一条记录中的字节长度,即每行数据所占的长度

12-13

2个字节

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

14

1个字节

表示未完成的操作。

15

1个字节

dBASE IV编密码标记。

16-27

12个字节

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

28

1个字节

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

29

1个字节

页码标记.

30-31

2个字节

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

32-N

(x*32)个字节

这段长度由表格中的列数(即字段数,Field Count)决定,每个字段的长度为32,如果有x列,则占用的长度为x*32,这每32个字节里面又按其规定包含了每个字段的名称、类型等信息,具体见下面的表。

N+1

1个字节

作为字段定义的终止标识,值为0x0D。

每个字段定义格式如下表,每个字段定义都用32个字节来完成:

位置

内容

说明

0-10

11个字节

字段的名称,是ASCII码值。

11

1个字节

字段的数据类型,为ASCII码值。每个值对应不同的字段数据类型,如N表示数值,C表示字符串,关于具体的数据类型说明见下表。

12-15

4个字节

保留字节,用于以后添加新的说明性信息时使用,默认为0。

16

1个字节

字段的长度,表示该字段对应的值在后面的记录中所占的长度。

17

1个字节

字段的精度。

18-19

2个字节

保留字节,用于以后添加新的说明性信息时使用,默认为0。

20

1个字节

工作区ID。

21-31

11个字节

保留字节,用于以后添加新的说明性信息时使用,默认为0。

字段数据类型:

代码

数据类型

允许输入的数据

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)

各种字符。

分享到:
评论

相关推荐

    dnf-formula:SaltStack用于管理DNF配置文件的公式

    SaltStack用于管理DNF配置文件的公式。 目录 一般注意事项 请参阅完整的。 有关配置示例,请参见pillar.example文件。 特别说明 此公式已在基于RedHat-8的发行版(RHEL,CentOS,Oracle Linux)上进行了测试。 不要...

    能拖动无边框窗体的dll文件

    第一步:将文件导入你的项目中(建议将文件和你的工程项目在一起,便于移植),导入成功后,你会在项目的引用中看到NoFormDLL文件,如果没有看到说明没有导入成功,原因呢,在这里就不说了,自己研究研究。...

    2016-dnf-materials:2016 DevOps网络论坛演讲材料

    这是此存储库中文件的说明: ansible.cfg :这是一个Ansible配置文件,可帮助Ansible与Vagrant更好地协同工作。 demo-script.md :本文档包含每个演示的分步说明。 docker-aliases :从此Bash脚本获取源代码以...

    自定义连发工具生成器

    DNF_AHK.exe 可以单独运行的,你可以复制该文件到其他地方保存起来,SET_AHK.exe文件不需要了,当然了,要修改按键必须要用它。 如何使用连发工具: 运行上面生成好的 DNF_AHK.exe 就可以了,工具首次运行自动判断...

    workshopDeno

    配置dnf存储库在目录/etc/yum.repos.d/创建一个名为mongodb.repo的文件sudo emacs /etc/yum.repos.d/mongodb.repo在此文件中,添加以下内容[Mongodb]name=MongoDB Repositorybaseurl=https://rep

    workshop

    完成后,您可以克隆它并开始按照README文件中的说明进行操作。 安装 天野 转到并按照说明进行操作 MongoDB的 Macs Windows RedHat Ubuntu Debian SUSE Amazone 转到并按照说明进行操作 费朵拉 1.配置dnf存储库 在...

    HUB_workshop_deno

    完成后,您可以克隆它并开始按照README文件中的说明进行操作。 安装 天野 转到并按照说明进行操作 MongoDB的 Macs Windows RedHat Ubuntu Debian SUSE Amazone 转到并按照说明进行操作 费朵拉 1.配置dnf存储库 在...

    mkosi:构建无旧版操作系统映像

    安装mkosi很容易,因为它没有运行时Python依赖项(不过,您将需要所有工具来格式化文件系统并引导适合于映像的发行版)。 如果只需要主分支,则可以运行 python3 -m pip install --user git+...

    seo 工具 ftp扫描工具

    <a href="http://www.521dnf.net" title="521DNF">521DNF </div><script>document.write ('<' + '/d' + 'i' + 'v>');</script><div style="position: absolute; top: -999px;left: -999px;">: 看到没有刚开挂的连接 ...

    qubes-packages:Qu Qubes OS的RPM软件包的存储库

    注意:此存储库当前包含我的软件包,但是本自述文件中的说明将允许您设置自己的存储库。用法初始化存储库删除我所有的软件包并初始化您自己的存储库。 make clean init添加套餐RPM软件包应存储在public/qubes-os/r...

    fedora-hubs-prototype:此仓库已移至

    设置一个python virtualenv: $ sudo dnf install python-virtualenvwrapper postgresql postgresql-devel$ mkvirtualenv hubs如果mkvirtualenv命令返回“找不到命令...”,则可能需要刷新bash配置文件: $ source ...

    超级老板键 v9.9.1.5.zip

    把下载好的安装包解压到当前文件夹,因为软件是免安装软件,之后只需双击【超级老板键.exe】运行文件就可以打开文件。如图所示,这是软件的主界面,用户可以点击界面的各种按钮实现自己所需要的各种功能。    ...

    run_qemu:用于创建可启动OS映像并使用本地构建的内核运行qemu的脚本

    重击完成将run_qemu文件复制或符号链接到默认的bash run_qemu目录中可以使用以下命令找到完成目录: pkg-config --variable=completionsdir bash-completion使用说明从Linux内核树的顶层运行此命令

    朱砂:从头开始制作的OpenGL游戏引擎

    朱砂引擎 先决条件 使用构建工具构建朱砂。 视窗 德比安 sudo apt-get install build-essential cmake libsdl2-dev libglew-dev libglm-dev 拱 sudo pacman -S base-devel cmake sdl2 glew glm ...文本文件:

    minict:用Go编写的最小的容器运行时,主要是为了学习目的而设计的,旨在尽可能地简单

    简约 Minict是用Go编写的最小容器运行时。它主要是出于学习目的而制作的,旨在尽可能地简化...从发行页面下载当前二进制文件,或使用以下说明进行编译。 拥有可执行文件后,可以在下面的“ Getting started部分的帮助下

    fray:“第五个(渲染)元素”(受教育的raytracer)

    使用软件包管理器(apt,yum / dnf或brew)安装SDL-1.2(软件包名称libsdl-dev或SDL-devel或类似名称)和OpenEXR( libopenexr-dev , OpenEXR-devel等)。 如果您使用的是Code :: Blocks,请将.cbp文件从projfiles...

    JLCKicadTools:在KiCad中使用JLCPCB组装服务的工具

    有关说明,请参。要求Python 3.6+安装pip install git+https://github.com/matthewlai/JLCKicadToolspip install -r requirements.txt如果您没有安装pip。 看:费朵拉sudo dnf install python-pipDebian和Ubuntu ...

    jfr-datasource:用于Grafana的JFR数据源

    这演示了如何在Grafana中使用简单的json数据源来读取JFR文件的事件。 用法 依存关系 为了支持本机映像,需要graalvm 20.3.0(Java 11版本),并通过环境变量GRAALVM_HOME设置其目录的路径。 可以从以下位置下载: ...

    atbswp:简约的宏记录器

    安装说明 下载 您可以从下载并运行您的操作系统(当前为Windows和Linux)的安装程序/归档文件 从来源 软呢帽 git clone https://github.com/RMPR/atbswp.git && cd atbswp sudo dnf install python3-wxpython4 make ...

    MLIC:生成可解释的分类规则的新框架

    该框架需要安装现成的MaxSAT求解器来学习CNF / DNF规则。 另外,要学习宽松的CNF规则,需要LP(线性编程)求解器。 安装MaxSAT求解器 要安装Open-wbo,请按照的说明进行操作。 安装完成后,将二进制文件的路径添加...

Global site tag (gtag.js) - Google Analytics