1. 程式人生 > >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。