All systems

Btrieve / Pervasive PSQL

Btrieve data
Supported
Guide

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

  • .dat or .btr Btrieve data files
  • .ddf data dictionary files (FILE.DDF, FIELD.DDF), alongside the data files: a dictionary with no .dat or .btr file 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:

OutputDescription
csv/{TableName}.csvOne CSV file per table with all row data
xlsx/{TableName}.xlsxExcel workbook per table (omitted for tables over 1,048,575 rows, 16,384 columns or 8,000,000 cells - see note below)
xls/{TableName}.xlsLegacy Excel format per table (omitted for tables over 65,535 rows, 256 columns or 150,000 cells - see note below)
json/{TableName}.jsonJSON array of records per table
json/{TableName}.jsonlNewline-delimited JSON (streaming-friendly)
postgres.sqlPostgreSQL CREATE TABLE + INSERT statements
mysql.sqlThe same schema and rows, in MySQL dialect
sqlite.sqlThe same schema and rows, in SQLite dialect
ansi.sqlThe same schema and rows, in portable ANSI SQL
sqlserver.sqlThe same schema and rows, in SQL Server (T-SQL) dialect
report.jsonStructured conversion report
report.mdHuman-readable conversion summary

How to Export / Obtain Files

  1. Locate your application's Btrieve data directory
  2. Copy the data files (.dat or .btr)
  3. Include the .ddf dictionary files (essential for field names and types)
  4. Create a ZIP with all files
  5. 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 .ddf files, 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 .xlsx sheet holds at most 1,048,575 rows of data and 16,384 columns, and a legacy .xls sheet 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 .xlsx copy 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 .xls copy 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.

Technical reference

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 (.log files)

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 CodeTypeSizeDescription
0StringVariableCharacter data ordered left to right, blank-padded
1Integer1, 2, 4, or 8 bytesSigned binary integer
2Float4 or 8 bytesIEEE single or double precision
3Date4 bytesDay, month, and year (0001 to 9999)
4Time4 bytesHundredths, seconds, minutes, hours
5DecimalVariablePacked decimal, two digits per byte
6MoneyVariableDecimal representation with two implied decimal places
7Logical1 or 2 bytesBoolean collated as a string
8NumericVariableZoned decimal stored as ASCII digits
9BFloat4 or 8 bytesMicrosoft Basic floating point (legacy)
10LStringVariableLength-prefixed (Pascal-style) string
11ZStringVariableNull-terminated (C-style) byte string
12NoteVariableLegacy text type, superseded
13LVarVariableLegacy variable-length type, superseded
14Unsigned BinaryVariableUnsigned integer compared byte by byte
15Autoincrement2, 4, or 8 bytesAutomatically assigned ascending integer
25WStringVariableUCS-2 Unicode string, not null-terminated
26WZStringVariableDouble-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

VersionYearKey FeaturesFile Format
Btrieve 5.x1988NetWare-native engine; transaction logging in 5.15.x, pre-image paging
Btrieve 6.01992Shadow paging6.0, page allocation tables
Btrieve 6.151994MicroKernel Database Engine6.x, variable-tail allocation tables
Pervasive.SQL 71998Btrieve 7.0 bundled with Scalable SQL 47.x
Pervasive PSQL v92005Larger databases, improved Linux support9.0 (128 GB); 9.5 (256 GB)
Pervasive PSQL v102007First 64-bit engine supportNo format change
Pervasive PSQL v112010Full 64-bit and IPv6 supportNo format change
PSQL v1320178-byte autoincrement, Android and iOS support13.0 (terabyte file sizes)
Actian Zen v142019Zen rebranding, AES-256 encryption, JSON filteringNo format change
Actian Zen v152021SQL windowing functionsNo format change
Actian Zen v162024Long keys, Kafka integration16.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

Questions

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.