Supported export formats
Diafunc tables export to 21 formats spanning six categories: tabular, columnar / structured, semi-structured, archive (database files), scientific, and statistical-software. Any registered format can be wrapped with one of four compression algorithms (gzip / bzip2 / xz / zstd) and / or a single-entry archive (zip / tar) to produce e.g.
The live catalogue is served at
Need to import data into Diafunc? See supported file formats.
.parquet.gz or .csv.tar.xz. The live catalogue is served at
GET /api/v1/storage/table-exports/supported-formats — the same source of truth the Lab format picker uses for its dropdown and the CLI uses for diafunc table export-formats. Need to import data into Diafunc? See supported file formats.
Tabular
Row × column tables. CSV / TSV stringify every cell; Excel promotes numeric and boolean columns to native cell types when the column type is declared.
| Format | Extension | MIME | Notes |
|---|---|---|---|
| CSV | .csv | text/csv | Defaults: , delimiter, " quote, ? null token. Override via ?delimiter= / ?quote= / ?nullValue= / ?quoteAll=. |
| TSV | .tsv | text/tab-separated-values | Same as CSV with tab delimiter. |
| Excel | .xlsx | application/vnd.openxmlformats… | Single sheet; numeric / boolean columns get native cell types. |
Columnar / structured
Self-describing typed-column formats. Per-column
ColumnSpec drives the on-disk type — Parquet / Arrow / ORC / Avro all emit long / double / boolean / string directly rather than stringifying. | Format | Extension | MIME | Notes |
|---|---|---|---|
| Parquet | .parquet | application/vnd.apache.parquet | Snappy-compressed single file. Single-file output; no partitioning. |
| Apache Arrow IPC / Feather | .arrow .feather | application/vnd.apache.arrow.file | One record batch. Requires runtime --add-opens for java.nio. |
| Apache ORC | .orc | application/vnd.apache.orc | VectorizedRowBatch writer. |
| Avro container | .avro | application/avro | In-memory DataFileWriter; no temp file. |
Semi-structured
Document-shaped exports. JSON / JSONL / YAML emit typed scalar values; XML and HTML stringify into element text; PDF renders a paginated visual artifact (not round-trippable as data).
| Format | Extension | MIME | Notes |
|---|---|---|---|
| JSON | .json | application/json | Top-level array of objects. |
| JSON Lines / NDJSON | .jsonl | application/x-ndjson | One JSON object per line. |
| YAML | .yaml | application/x-yaml | Sequence of mappings. |
| XML | .xml | application/xml | <rows><row><col>…</col></row></rows>. |
| HTML | .html | text/html | Single <table> document. |
| application/pdf | Paginated landscape render. Visual artifact — not round-trippable. |
Archive (database files)
Single-table database files. The exported table lands as one user table inside the file; queries are immediately runnable with
sqlite3 or the DuckDB CLI. | Format | Extension | MIME | Notes |
|---|---|---|---|
| SQLite | .sqlite | application/vnd.sqlite3 | Column types: INTEGER / REAL / BOOLEAN / TEXT. |
| DuckDB | .duckdb | application/vnd.duckdb | Column types: BIGINT / DOUBLE / BOOLEAN / VARCHAR. |
Scientific
Hierarchical scientific-data formats. HDF5 writes a rank-2
/data dataset; NetCDF-4 is HDF5 with the _NCProperties attribute (NetCDF-4 IS HDF5 on disk). Classic CDF-1 / CDF-2 not produced. | Format | Extension | MIME | Notes |
|---|---|---|---|
| HDF5 | .h5 | application/x-hdf5 | Rank-2 dataset at /data. Row / column name datasets when set. |
| NetCDF-4 | .nc4 | application/x-netcdf | HDF5-delegated; NetCDF-4 readers (Python netCDF4, NCO) read it natively. |
Statistical software
Hand-rolled writers mirroring the import-side readers. Round-trip-tested via the matching reader.
| Format | Extension | MIME | Notes |
|---|---|---|---|
| SAS | .sas7bdat | application/x-sas-data | Hand-rolled sas7bdat writer; round-trips via the parso reader. |
| SPSS | .sav | application/x-spss-sav | Uncompressed $FL2; short-string columns only (≤8 bytes). |
| Stata | .dta | application/x-stata-dta | Release 118 (Stata 14+). Numeric→double; strings→str244. |
| R serialized data | .rds | application/x-rds | Format version 2 XDR, gzip envelope. data.frame with logical / integer / double / character columns. |
Compression and archive wrappers
Layer on top of any format. Order is format → archive → compression so
?archive=tar&compression=gzip produces a real gzipped tarball (.tar.gz), not a zip-of-gz. | Wrapper | Values | Notes |
|---|---|---|
| Compression | gzip · bzip2 · xz · zstd | Same four algorithms as on the import side. Adds .gz / .bz2 / .xz / .zst to the filename. |
| Archive | zip · tar | Single-entry archive. zip carries its own per-entry deflate so ?compression= is ignored when ?archive=zip. |
Range slicing and CSV dialect overrides
Optional half-open row / column ranges:
CSV / TSV exports accept dialect overrides:
?fromRow=&toRow=&fromColumn=&toColumn=. Out-of-range values clamp to the actual table extent; inverted ranges return 400. CSV / TSV exports accept dialect overrides:
?delimiter="e=&nullValue="eAll=. delimiter and quote are single-character; quoteAll is true by default.