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
.dator.btrBtrieve data files.ddfdata dictionary files (FILE.DDF,FIELD.DDF), alongside the data files: a dictionary with no.dator.btrfile has nothing to convert, and the upload is refused- ZIP archive with complete file sets
What You Get Out
DataMeans converts 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 (omitted for tables over 1,048,575 rows, 16,384 columns or 8,000,000 cells - see note below) |
xls/{TableName}.xls | Legacy Excel format per table (omitted for tables over 65,535 rows, 256 columns or 150,000 cells - see note below) |
json/{TableName}.json | JSON array of records per table |
json/{TableName}.jsonl | Newline-delimited JSON (streaming-friendly) |
postgres.sql | PostgreSQL CREATE TABLE + INSERT statements |
mysql.sql | The same schema and rows, in MySQL dialect |
sqlite.sql | The same schema and rows, in SQLite dialect |
ansi.sql | The same schema and rows, in portable ANSI SQL |
sqlserver.sql | The same schema and rows, in SQL Server (T-SQL) dialect |
report.json | Structured conversion report |
report.md | Human-readable conversion summary |
How to Export / Obtain Files
- Locate your application's Btrieve data directory
- Copy the data files (
.dator.btr) - Include the
.ddfdictionary files (essential for field names and types) - Create a ZIP with all files
- Upload the ZIP to DataMeans
Supported Features
- Btrieve file formats 3.x to 6.x, checked record for record against an independent Btrieve reader on real files
- The 7.x to 9.x formats written by Pervasive.SQL and Pervasive PSQL, read the same way (see Known Limitations)
- Data dictionary (
.ddf) parsing for table and field definitions - Variable-length records
- Files without a dictionary: key fields are read from the file's own key definitions, and every other byte of each record is laid out around them, so nothing is left out
- Field types including BFLOAT (Microsoft Binary Format), TIMESTAMP and Unicode strings
Known Limitations
- Without the
.ddffiles, column names cannot be recovered. Key fields are named after their key (KEY0_0), other fields by position (FIELD_3), and the table is marked for review. Fields outside the keys are worked out from the records; anything that cannot be, including the variable-length part of each record, comes out as raw bytes (base64). On the job page you can set the field boundaries and names yourself - The 7.x to 9.x formats have not yet been checked against a real file of those versions. Each file is checked as it is read, against its own page table and the record count it states: if the count read differs, the report says so, and a file whose pages cannot be read is reported as unreadable rather than returned as an empty table
- Compressed (RDC) files are refused rather than half-read; the upload screen names the file and asks you to export it with Pervasive's BUTIL utility first
- Files protected with an owner name (encrypted) are not detected, and their data comes out unreadable: remove the owner name in your Btrieve tools first
- Actian Zen 13.0-format files are not read
- CURRENCY, BIT and DATETIME fields are delivered as their raw bytes (base64), with a note in the report
- Indexes are not carried over
Note on the Excel formats. An
.xlsxsheet holds at most 1,048,575 rows of data and 16,384 columns, and a legacy.xlssheet 65,535 rows and 256 columns. Rather than ship a file that looks complete but is silently cut short, DataMeans leaves a table out of any Excel format it does not fit and notes it in the job report. The.xlsxcopy is also left out for tables of more than 8,000,000 cells (1,048,575 rows of 12 columns is 12.6 million), which take too long and too much memory to write, and the.xlscopy for tables of more than 150,000 cells, which the legacy format takes far too long to write. The CSV, JSON and SQL outputs always contain every row.
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
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 data files directly, without Btrieve or Pervasive PSQL. Include the application's .ddf dictionary files, which DataMeans uses to map the tables and fields.
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 they're deleted automatically: within 7 days if you don't go ahead with a conversion, and when your download window ends if you do. We never sell or share your data, and we never use it to train machine-learning models.