Read (streaming) and write Qlik QVD files - next-generation build of qvd on the DuckDB C API v2
Compatibility Matrix
This table covers all DuckDB releases that have not reached end-of-life, including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 |
|---|---|---|---|---|---|
| Linux AMD64 | |||||
| Linux ARM64 | |||||
| macOS AMD64 | |||||
| macOS ARM64 | |||||
| Windows AMD64 | |||||
| Windows ARM64 | |||||
| WebAssembly |
Installing and Loading
INSTALL qvd_next FROM community;
LOAD qvd_next;
Example
INSTALL qvd_next FROM community;
LOAD qvd_next;
-- Read (streaming, bounded memory)
SELECT * FROM read_qvd('sales.qvd');
SELECT * FROM read_qvd('data/*.qvd'); -- glob
-- Write: field names come from the query
COPY (SELECT * FROM sales) TO 'output.qvd' (FORMAT qvd);
-- Import: values are cast to the target table's column types
COPY sales FROM 'output.qvd' (FORMAT qvd);
About qvd_next
Next-generation build of the qvd
extension, on DuckDB's C API v2 (via the duckdb-neo crate). Same SQL surface
(read_qvd, COPY ... (FORMAT qvd)), plus:
COPY ... TOkeeps the query's column names (FIELD_NAMESbecomes an optional override);COPY ... FROMcasts values to the target table's column types;read_qvd(path)is documented induckdb_functions().
Reading is streaming and projected (bounded memory; only the projected
columns' symbol tables are read and decoded), with native typing from the
Qlik tags, projection pushdown and multi-file glob. All I/O goes through
DuckDB's file system, so s3://, https://, etc. work once httpfs is
loaded (remote globs included). QVD headers are validated against the file
before reading, so corrupt files fail cleanly.
Trade-off: the C API v2 is not stable yet, so this build targets one exact
DuckDB version and is experimental. qvd (stable C ABI) remains the
conservative choice. Load only one of qvd / qvd_next per session: both
register read_qvd and FORMAT qvd.
Added Functions
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| read_qvd | table | Reads a Qlik QVD file (or a glob of files, concatenated by field name) as a table, typing columns from the Qlik tags and decoding only the projected columns. | NULL | [SELECT * FROM read_qvd('sales.qvd');, SELECT count() FROM read_qvd('data/.qvd');] |
Overloaded Functions
This extension does not add any function overloads.
Added Types
This extension does not add any types.
Added Settings
| name | description | input_type | scope | aliases | typed_value |
|---|---|---|---|---|---|
| temp_directory | Set the directory to which temporary files are written. | VARCHAR | GLOBAL | [] | post.db.tmp |