Btrieve (now Pervasive PSQL, Actian Zen) is a key-value database system with optional relational SQL layer. It uses B-tree indexing and is widely deployed in vertical market applications.
What You Can Upload
.btrBtrieve data files.ddfdata dictionary files- Associated index files
- ZIP archive with complete file sets
What You Get Out
DataMeans extracts your data into multiple modern formats:
| Output | Description |
|---|---|
csv/{TableName}.csv | One CSV file per table with all row data |
xlsx/{TableName}.xlsx | Excel workbook per table |
xls/{TableName}.xls | Legacy Excel format per table |
json/{TableName}.json | JSON array of records per table |
json/{TableName}.jsonl | Newline-delimited JSON (streaming-friendly) |
postgres.sql | PostgreSQL CREATE TABLE + INSERT statements |
schema/schema-graph.json | Relationship graph for visualization |
schema/er-model.json | ER model for diagram tools |
report.json | Structured extraction report |
report.md | Human-readable extraction summary |
How to Export / Obtain Files
- Locate your application's Btrieve data directory
- Copy all
.btrdata files - Include
.ddfdictionary files (essential for field mapping) - Create a ZIP with all files
- Upload the ZIP to DataMeans
Supported Features
- Key-value record extraction
- B-tree index analysis
- Data dictionary parsing for field definitions
- Record structure mapping
- Variable-length record handling
Known Limitations
- Data dictionary (DDF) files required for proper field mapping
- Some proprietary application-specific structures may need review
- Version-specific format differences exist
Overview
Btrieve (now Actian Zen) is a transactional database engine using Indexed Sequential Access Method (ISAM) for high-performance data storage and retrieval. Originally developed for embedded applications, it provides record-level access with multi-user concurrency, transactional integrity, and flexible indexing. The engine uses proprietary file formats optimized for speed and reliability in business applications.
History and Background
- 1982: SoftCraft develops Btrieve as a record manager.
- 1987: Novell acquires SoftCraft, integrates Btrieve with NetWare.
- 1994: Novell spins off Btrieve to BTI (Btrieve Technologies Inc.).
- 1996: BTI is renamed Pervasive Software.
- 1998: Pervasive.SQL 7 combines Btrieve 7.0 with Scalable SQL 4.
- 2005: Pervasive PSQL v9 expands maximum file sizes with the 9.0 and 9.5 formats.
- 2007: Pervasive PSQL Summit v10 introduces 64-bit engine support.
- 2010: Pervasive PSQL v11 adds full 64-bit and IPv6 support.
- 2013: Actian acquires Pervasive Software.
- 2019: Zen v14 completes the rebranding from Pervasive PSQL to Actian Zen.
- 2024: Actian Zen v16 introduces the 16.0 file format with long key support.
File Format Specifications
Btrieve uses proprietary ISAM-based file formats with efficient indexing and storage.
File Extensions:
.btr: Conventional extension for Btrieve data files (binary ISAM format).mkd: Conventional extension for MicroKernel Database Engine data files.ddf: Data dictionary files describing table schema for the relational engine- No separate index files - indexes embedded in the data file
File Structure:
- Fixed-length or variable-length records
- B-tree indexes for fast key-based access
- Page-based storage with page sizes from 512 to 16,384 bytes
- Optional record compression and page compression (9.5 format onward)
- Transaction log segments for recovery (
.logfiles)
Key Components:
- Data pages: Store actual record data
- Index pages: B-tree nodes for key navigation
- File control record: Metadata including format version and page size
- Page allocation tables: Map logical pages to physical pages (6.0 format onward)
- Variable-tail allocation tables: Locate overflow portions of variable-length records (6.15 onward)
Data Types and Structures
Btrieve supports the following documented key types:
| Type Code | Type | Size | Description |
|---|---|---|---|
| 0 | String | Variable | Character data ordered left to right, blank-padded |
| 1 | Integer | 1, 2, 4, or 8 bytes | Signed binary integer |
| 2 | Float | 4 or 8 bytes | IEEE single or double precision |
| 3 | Date | 4 bytes | Day, month, and year (0001 to 9999) |
| 4 | Time | 4 bytes | Hundredths, seconds, minutes, hours |
| 5 | Decimal | Variable | Packed decimal, two digits per byte |
| 6 | Money | Variable | Decimal representation with two implied decimal places |
| 7 | Logical | 1 or 2 bytes | Boolean collated as a string |
| 8 | Numeric | Variable | Zoned decimal stored as ASCII digits |
| 9 | BFloat | 4 or 8 bytes | Microsoft Basic floating point (legacy) |
| 10 | LString | Variable | Length-prefixed (Pascal-style) string |
| 11 | ZString | Variable | Null-terminated (C-style) byte string |
| 12 | Note | Variable | Legacy text type, superseded |
| 13 | LVar | Variable | Legacy variable-length type, superseded |
| 14 | Unsigned Binary | Variable | Unsigned integer compared byte by byte |
| 15 | Autoincrement | 2, 4, or 8 bytes | Automatically assigned ascending integer |
| 25 | WString | Variable | UCS-2 Unicode string, not null-terminated |
| 26 | WZString | Variable | Double-null-terminated Unicode string |
Database Structure:
- Records: Fixed-length or variable-length data units
- Keys: Indexed fields for fast access (up to 119 keys per file)
- Segments: Multi-field composite keys (up to 420 segments per file in the 9.5 format with 8 KB or larger pages)
- Duplicates: Keys may be unique or allow duplicate values
- Referential integrity: Enforced by the relational engine using data dictionary definitions
Version Differences
| Version | Year | Key Features | File Format |
|---|---|---|---|
| Btrieve 5.x | 1988 | NetWare-native engine; transaction logging in 5.1 | 5.x, pre-image paging |
| Btrieve 6.0 | 1992 | Shadow paging | 6.0, page allocation tables |
| Btrieve 6.15 | 1994 | MicroKernel Database Engine | 6.x, variable-tail allocation tables |
| Pervasive.SQL 7 | 1998 | Btrieve 7.0 bundled with Scalable SQL 4 | 7.x |
| Pervasive PSQL v9 | 2005 | Larger databases, improved Linux support | 9.0 (128 GB); 9.5 (256 GB) |
| Pervasive PSQL v10 | 2007 | First 64-bit engine support | No format change |
| Pervasive PSQL v11 | 2010 | Full 64-bit and IPv6 support | No format change |
| PSQL v13 | 2017 | 8-byte autoincrement, Android and iOS support | 13.0 (terabyte file sizes) |
| Actian Zen v14 | 2019 | Zen rebranding, AES-256 encryption, JSON filtering | No format change |
| Actian Zen v15 | 2021 | SQL windowing functions | No format change |
| Actian Zen v16 | 2024 | Long keys, Kafka integration | 16.0 |
Compatibility Notes:
- Later engines open files created in earlier formats; 5.x and older files are read-only until rebuilt
- Btrieve 6.x and earlier engines cannot open files in the 7.0 or later formats
- Automatic in-place format upgrade applies only from 8.x to 9.0
- The Rebuild utility converts files between format versions
- Page compression requires the 9.5 file format or later
Technical References
- Wikipedia: Btrieve
- Wikipedia: Actian Zen
- Actian Zen Data Types
- Actian Zen Converting Data Files
- BTR File Format
To learn how to use this format with DataMeans, see the User Guide.
What can I convert Btrieve / Pervasive PSQL files to?
DataMeans converts Btrieve / Pervasive PSQL files to clean CSV, Excel, JSON & SQL. Each table is exported as its own file, alongside a structured report of exactly what was extracted.
Do I need Btrieve / Pervasive PSQL installed to open my files?
No. DataMeans reads Btrieve / Pervasive PSQL files directly, so you don't need Btrieve / Pervasive PSQL, a license, or any other legacy software to recover your data.
Can I preview my Btrieve / Pervasive PSQL data before paying?
Yes. DataMeans shows your extracted tables and rows in the browser first, so you only pay when you're ready to download the full CSV, Excel, JSON & SQL export.
Is my data secure?
Yes. Your files are encrypted in transit and at rest, and are automatically deleted once your conversion is complete. Your data is never sold, shared, or used for anything else.