[Reference]
https://www.796t.com/content/1550563923.html
https://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
DBF 是早期開發的資料庫檔案格式,但現在仍被廣泛使用,副檔名為.dbf。一個DBF檔案即是一個資料表(Table)。
DBF 檔案格式包含檔頭及資料區,二者之間以一個位元 (0x0D) 區隔,檔案末端以位元(0x1A)作為結束。
檔頭包含資料欄位的定義。 檔頭由包含 32 位元的固定長度和多個欄位定義紀錄組成:
固定長度 32 位元的定義如下:
欄位定義紀錄的定義如下:
位元 | 長度 | 資料型態 | 說明 |
0-10 | 11 | char[11] | 欄位名稱 |
11 | 1 | char | 資料類型 (見下表說明) |
12-15 | 4 | 保留未用,填0 | |
16 | 1 | 欄位長度(二進位) | |
17 | 1 | 欄位數值值精度(二進位) | |
18-19 | 2 | 保留未用,填0 | |
20 | 1 | 工作區ID | |
21-30 | 10 | 保留未用,填0 | |
31 | 1 | MDX記號 |
資料類型
代號 | 說明 | 允許輸入的資料 |
B | 二進位值 | 文字(?) |
C | 文字 | 文字 |
D | 日期 | YYYYMMDD |
G | 通用 | 文字 |
N | 數值 | -.0123456789 |
L | 邏輯 | ?YyNnTtFf(?表示沒有初始化) |
M | Memo | 文字 |
每一筆資料前的控制字元,0x20表示沒有刪除,0x2A表示被刪除。
檔案長度計算:
假設檔案有 4個欄位,長度分別為 12, 14, 16, 18,並有 10 筆資料。
檔頭長度:32 + 32*4 = 160
分隔字元(0x0D):1
資料區:
每筆資料:1 + 12 + 14 + 16 + 18 = 61 (含前面的控制字元)
10筆資料:61*10 = 610
結尾字元(0x1A):1
總檔案長度: 160 + 1 + 610 + 1 = 772
No comments:
Post a Comment