Search Shortcut cmd + k | ctrl + k
qvd_next

Read (streaming) and write Qlik QVD files - next-generation build of qvd on the DuckDB C API v2

Maintainer(s): snouhaud

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 ... TO keeps the query's column names (FIELD_NAMES becomes an optional override);
  • COPY ... FROM casts values to the target table's column types;
  • read_qvd(path) is documented in duckdb_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