DBF文件的初步了解(一)

2024-05-12 22:58
文章标签 初步 了解 dbf

本文主要是介绍DBF文件的初步了解(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      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。

这篇关于DBF文件的初步了解(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983979

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

PHP: 深入了解一致性哈希

前言 随着memcache、redis以及其它一些内存K/V数据库的流行,一致性哈希也越来越被开发者所了解。因为这些内存K/V数据库大多不提供分布式支持(本文以redis为例),所以如果要提供多台redis server来提供服务的话,就需要解决如何将数据分散到redis server,并且在增减redis server时如何最大化的不令数据重新分布,这将是本文讨论的范畴。 取模算法 取模运

初步学习Android的感想

之前在学习java语言的时候就经常听说过Android这门语言,那时候感觉Android有些神秘感,再加上Android是用来开发移动设备的一门语言,所以一直对Android抱有一种兴奋的心情。 在我开始接触 Android之后,感觉超好玩,因为可以在自己的手机设备上开发一些我喜欢的小应用,再想想之前说学习Android应该会很难,但是如果你真的接触了,而且有JAVA的功底,我想学习Androi

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

Java了解相对较多!

我是对Java了解相对较多,而对C#则是因工作需要才去看了一下,C#跟Java在语法上非常相似,而最初让我比较困惑的就是委托、事件部分,相信大多数初学者也有类似的困惑。经过跟Java的对比学习,发现这其实跟Java的监听、事件是等同的,只是表述上不同罢了。   委托+事件是观察者模式的一个典型例子,所谓的委托其实就是观察者,它会关心某种事件,一旦这种事件被触发,这个观察者就会行动。   下

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

初步了解VTK装配体

VTK还不太了解,根据资料, vtk.vtkAssembly 是 VTK库中的一个重要类,允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。 import vtkimport mathfrom vtk.util.colors import *filenames = ["cylinder.stl","sphere.stl","torus.stl"]dt = 1.0renW

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

了解elementUI的底层源码, 进行二次开发

Element UI 是一个基于 Vue.js 的桌面端组件库,广泛用于构建美观、交互友好的用户界面。要深入理解 Element UI 的底层源码并进行二次开发,你需要掌握以下几个关键点: Vue.js 原理 Element UI 是基于 Vue.js 构建的,因此首先需要熟悉 Vue.js 的核心概念和机制,包括: ● 组件系统:Vue.js 的组件化思想,如何定义组件、使用组件、传递属性和事