Search Shortcut cmd + k | ctrl + k

Read (streaming) and write Qlik QVD files

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 FROM community;
LOAD qvd;

Example

INSTALL qvd FROM community;
LOAD qvd;

-- Read (streaming, bounded memory)
SELECT * FROM read_qvd('sales.qvd');
SELECT * FROM read_qvd('data/*.qvd');         -- glob

-- Write (field names via FIELD_NAMES, one per column)
COPY (SELECT id, amount FROM sales) TO 'output.qvd' (FORMAT qvd, FIELD_NAMES (id, amount));

-- Import
COPY sales FROM 'output.qvd' (FORMAT qvd);

About qvd

100% Rust extension to read and write Qlik QVD files.

  • Streaming, projected read: bounded memory (~30-40x less than a naive read) and only the projected columns are decoded (16-30x faster on narrow queries over large files). Native typing BIGINT/DOUBLE/VARCHAR/DATE/ TIMESTAMP/TIME/INTERVAL, projection pushdown and multi-file glob.
  • COPY ... TO (FORMAT qvd) write with FIELD_NAMES option, and COPY tbl FROM 'x.qvd' (FORMAT qvd) import (fields by position; target column types must match the inferred ones).
  • QVD headers are treated as untrusted: sizes and offsets are validated against the file before reading, so corrupt files fail cleanly.
  • Stable C ABI: one binary for DuckDB 1.5.6 and 2.0.x.

Added Functions

function_name function_type description comment examples
read_qvd table NULL NULL  

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