qvd
High-performance Rust library for reading, writing, converting and merging Qlik QVD files.
Disclaimer: This project is not affiliated with Qlik Technologies or QlikTech. QVD is a proprietary format; all trademarks belong to Qlik. This library was built from scratch using publicly available information. See LEGAL.md for details.
Features
- Read/Write QVD with byte-identical roundtrip (tested on 399 files up to 2.8 GB)
- Streaming chunk-based reader for large files
- EXISTS() O(1) index + filtered reads (2.5x faster than Qlik Sense)
- Concatenate — pure append with strict/union schema modes
- PK Merge — upsert/dedup by primary key (replace/skip/error). First QVD library with this
- Parquet/Arrow — bidirectional conversion,
write_arrow()for direct Arrow-to-QVD - DuckDB / DataFusion — register QVD as SQL tables
- Python — PyArrow, pandas, Polars via zero-copy Arrow bridge
- CLI — inspect, convert, filter, head
Quick Start
# Cargo.toml
= "0.6.0"
let table = read_qvd_file?;
write_qvd_file?;
=
Documentation
| Rust Examples | Read/write, streaming, EXISTS, Parquet, Arrow, concat, PK merge, DataFusion |
| Python Examples | Read/write, Arrow, pandas, Polars, DuckDB, concat, PK merge, workflows |
| API Reference | Full API tables for Rust and Python |
| Release Notes | Changelog for all versions |
License
MIT — Stanislav Chernov (@bintocher)