DBF ファイル形式とは?
.dbf ファイルには、レコードを持つテーブルで構成された構造化データベースが含まれています。この形式は1983年に dBASE II と共に誕生し、より広範な xBase ファミリーのデータベースツールの事実上の標準となりました。.dbf は、さまざまなアプリケーション間でのデータ交換を容易にするために設計されました。.dbf 形式には複数のダイアレクト(方言)バージョンが存在し、各イテレーションで新しいデータ型やフラグが追加されています。これらの違いにより、どのダイアレクトに従っているかを知らなければ、すべてのアプリケーションが特定の .dbf ファイルを開けるわけではありません。
.dbf ファイルヘッダーはバイナリでエンコードされており、データベースの構造を記述しています。次のような情報が保持されています:
- バージョンフラグバイト(オフセット0。例:
0x03= メモなしの dBASE III/IV、0x30= Visual FoxPro、0x83= 関連メモありの dBASE III) - 最終更新日(バイト1-3、YY MM DDとして保存)
- レコード数 - 32ビット整数
- ヘッダー長とレコードフィールド長
- 暗号化フラグ
- フィールド記述子配列 - カラム名、型、固定幅のテーブル
ヘッダーの後、レコードはASCIIテキストまたはバイナリ形式で、一定のフィールド長で保存されます。アプリケーションによってレコードが削除されると、その最初のバイトがアスタリスク(0x2A)に設定され、物理的に消去されるのではなく、論理的に削除されたものとしてマークされます。新しいレコードはファイルの末尾に追加され、ファイルサイズが増加します。一部の実装では、後に PACK 操作によってファイルを圧縮し、以前に削除されたレコードを上書きします。
メモデータ(長いテキスト、バイナリ、または OLE オブジェクト)は .dbf 自体の中には保存されず、関連ファイルに保存されます。dBASE III/IV の場合は .dbt、FoxPro/Visual FoxPro の場合は .fpt です。.dbf レコードには、関連ファイルへのブロック番号ポインタのみが保存されます。.dbf ファイルは専用の DBF ビューアを使用して開くこともでき、そのようなツールを使用すると、ユーザーは人間が読める形式でファイルの内容を確認できます。バイナリヘッダーやフィールドデータが文字化けして表示されるため、.dbf ファイルをテキストエディタで開くべきではありません。
セキュリティと安全性
リスク: LOW.dbf は単純な表形式のデータであり、実行可能ではないため、開いても安全です。実用上の注意点が2つあります。(1) 文字エンコーディング/コードページの不一致により、アクセント付き文字や非ラテン文字が文字化けすることがあります。インポート時に正しい文字セットを選択してください。(2) 会計、税務、または GIS ソースからの DBF には個人情報や機密データが含まれている可能性があるため、オンラインビューアへのアップロードは避けてください。破損した DBF(メモファイルの欠落や切り捨て)は、通常のアプリではなく修復/復旧ツールが必要になる場合があります。
形式の詳細
概要DBF ファイルを開くプログラム
技術的詳細
詳細仕様| フォーマットカテゴリ | フラットな単一テーブルのバイナリデータベース。バイナリヘッダーとフィールド記述子配列を持つ固定長レコードレイアウト |
| MIMEタイプ | application/dbf (実装により application/dbase や application/x-dbf も使用される) |
| バージョンの識別 | 最初のバイト(オフセット0)は固定のマジックナンバーではなくダイアレクトフラグ:0x03 = メモなし dBASE III/IV、0x30 = Visual FoxPro、0x83 = .dbtメモあり dBASE III、0xF5 = メモあり FoxPro 2.x |
| ヘッダー構造 | 32バイトのベースヘッダー + カラムごとに1つの32バイトフィールド記述子 + 0x0D終端バイト。フィールド記述子はオフセット32から開始 |
| 削除の処理 | 削除されたレコードは、レコードの最初のバイトを 0x2A (ASCII アスタリスク) に設定することで論理的にフラグが立てられます。PACK 操作によって明示的に削除されるまでファイル内に残ります |
| レコードのエンコーディング | 固定長レコード。文字フィールドは ASCII、数値フィールドはゾーン10進 ASCII 文字列、日付は8バイトの YYYYMMDD ASCII、その他の型はバイナリ/生バイト |
| サポートされているフィールド型 | 文字 (C)、数値 (N)、日付 (D)、論理 (L)、メモ (M)、浮動小数点 (F)。Visual FoxPro では通貨 (Y)、日時 (T)、整数 (I)、および OLE オブジェクト用の一般 (G) が追加されます |
| メモ関連ファイル | dBASE III/IV 用は .dbt、FoxPro および Visual FoxPro 用は .fpt。 .dbf レコードにはメモデータ自体ではなく、10桁のブロック番号ポインタのみが保存されます |
| インデックス関連ファイル | .ndx (dBASE 単一インデックス)、.mdx (dBASE IV マルチインデックス)、.cdx (FoxPro/VFP 複合インデックス) - すべて外部ファイルであり、.dbf 内にインデックスデータは埋め込まれません |
| 最大レコード数 | dBASE 7 では1テーブルあたり最大 1,073,741,823 レコード (2^30 − 1)。以前のダイアレクトではヘッダーのフィールド幅に応じてより低い数に制限されます |
| 1テーブルあたりの最大フィールド数 | 標準的な xBase ダイアレクト (dBASE III から FoxPro/VFP) では 255 フィールド |
| フィールド名の長さ | dBASE III/IV および FoxPro では最大10文字。dBASE 7 のロングフィールド名モードでは最大128文字 |
| コードページサポート | ヘッダーのオフセット 29 (0x1D) に保存されるコードページ識別子。一般的な値:0x03 Windows ANSI、0x57 US OEM (CP437)、0x64 東欧 OEM (CP852) |
| 暗号化フラグ | オフセット 15 (0x0F) のヘッダーバイトは dBASE レベルのレコード暗号化を示します。設定されている場合、レコードデータは XOR で難読化されます(ファイルシステムレベルの暗号化とは異なります) |
| GISでの使用 | ESRI シェープファイルは、.shp ジオメトリファイルと共に、機能属性用の関連 .dbf を常に同梱します。GDAL/ogr2ogr などのツールは、これらの .dbf ファイルをネイティブに読み書きします |
| リリース日 | 1983 (dBASE II/III); format family known as xBase |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.dbase.com |
DBF の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。DBF ファイルについて最初の質問をしてみましょう。