Skip to content
ABRQ DATADocs Abrq DIP · latest
Product page Request a trial
On this page

Exports

What exports do#

An export job reads a table or a read-only SELECT from a database connector, formats the rows as files, and writes them to a storage connector on a schedule. Use it for partner hand-offs, archival snapshots, and feeding downstream tools that want files rather than a database session.

Exports are the mirror image of file ingestions: same storage connectors, opposite direction.

Before you begin#

  • Role. A viewer can read export jobs and run history. An editor is required to create or edit a job — and also to use Validate SQL and Preview, because both execute against the source database.
  • A source connector: Postgres, CockroachDB, MySQL, or SingleStore.
  • A destination connector: local, S3, Azure Blob, GCS, FTP, or FTPS.

Warning. MariaDB appears in the source picker but is not supported. Saving a MariaDB-sourced export always fails with source engine 'mariadb' is not a supported export source yet. Export from a supported engine, or replicate the data first.

The builder#

Four steps: SourceFormatDestinationSchedule & review.

Step 1 — Source#

Field Notes
Name Identifies the job, and feeds the {name} filename token.
Source connector Postgres, CockroachDB, MySQL, or SingleStore.
Source type A table or A custom SQL query.
Table Table picker, when the source type is a table.
SQL query A read-only SELECT. Statements that modify data are rejected.

For a custom query, press Validate SQL before continuing. It checks the statement against the live connector and reports the resulting columns, so you catch a typo or a missing schema qualifier before the first scheduled run.

SELECT order_id, customer_id, order_total, ordered_at
FROM sales.orders
WHERE ordered_at >= CURRENT_DATE - INTERVAL '7 days'

Step 2 — Format#

Field Values
Format CSV, JSON Lines (.jsonl), JSON array, Parquet.
Compression none, gzip, or snappy.

Compression rules:

  • snappy is valid for Parquet only. Choosing it with any other format is rejected.
  • gzip appends .gz to the filename — except on Parquet, which carries its compression codec internally and keeps the .parquet extension.

Preview runs the configured SELECT with LIMIT 50 and shows a sample. It writes nothing to the destination — it is safe to run repeatedly while you tune the query, and it requires the editor role because it queries the source.

Step 3 — Destination#

Field Notes
Destination connector local, S3, Azure Blob, GCS, FTP, or FTPS.
Bucket S3 only.
Path The folder files are written to, for example exports/orders/.
Filename template See the token table below.
Rows per file Splits the result across multiple files.
Mode Full, Incremental, or Partitioned.

Filename template

The template accepts exactly three tokens — no others are substituted:

Token Expands to Example
{name} The export job's name. orders_weekly
{ts} The run's UTC timestamp. 20260730T021500Z
{part} The file's sequence number, 4-digit zero-padded. 0001

A typical template:

{name}_{ts}_{part}.csv

Always include {part} when Rows per file is set — without it every part overwrites the last.

Modes

Mode Behaviour Requires
Full Exports the whole result every run.
Incremental Exports only rows added since the last run. An increasing column (a monotonically increasing id or timestamp).
Partitioned Writes one file per date, laid out as column=YYYY-MM-DD under the path. The partition column.

An empty result still writes one header-only file, so downstream consumers see a file every cycle rather than an ambiguous silence.

Step 4 — Schedule and review#

Schedule Notes
Manual Runs only when someone presses Run now.
Hourly Every hour.
Daily at a time You choose the time of day.
Weekly on chosen days You choose the days and the time.
Custom cron A 5-field cron expression.

Note. All schedule times are UTC, including the daily and weekly time pickers and any cron expression. Convert from local time before entering it.

Running an export#

Run now lives on the exports list page, not on the job's detail page.

A disabled job cannot be run:

export is disabled; enable it before running

Enable the job from the list, then run it.

Run history#

Each run records:

Column Meaning
Status Success or failure.
Started Run start time.
Duration Wall-clock time of the run.
Rows Rows exported.
Size Total bytes written.
Files Number of files produced.

Open a run to see its log lines and the path of every file it wrote — the quickest way to confirm where a partner's data actually landed.

A retry does not overwrite the original run: it creates a new run row with an incremented attempt number, so the failure and the recovery both stay in the history.

Deleting an export#

Deleting is a soft delete: the job disappears from the list and stops running, and its history is retained. Ask your administrator if you need a deleted job restored — see Retention.

Field reference#

Field Step Values / default
Name 1 Feeds the {name} token.
Source connector 1 Postgres, CockroachDB, MySQL, SingleStore. MariaDB is rejected on save.
Source type 1 A table, or a custom read-only SELECT.
Validate SQL 1 Editor role; runs against the source.
Format 2 CSV, JSON Lines (.jsonl), JSON array, Parquet.
Compression 2 none, gzip, snappy (Parquet only).
Preview 2 LIMIT 50; writes nothing; editor role.
Destination connector 3 local, S3, Azure Blob, GCS, FTP, FTPS.
Bucket 3 S3 only.
Path 3 Destination folder.
Filename template 3 Tokens {name}, {ts}, {part} only.
Rows per file 3 Splits output into parts.
Mode 3 Full, Incremental (increasing column), Partitioned (column=YYYY-MM-DD).
Schedule 4 Manual, Hourly, Daily at a time, Weekly on days, custom 5-field cron — UTC.

Failure modes#

What you see Cause Fix
source engine 'mariadb' is not a supported export source yet The source connector is MariaDB. Use Postgres, CockroachDB, MySQL, or SingleStore.
export is disabled; enable it before running Run now was pressed on a disabled job. Enable the job on the list page, then run it.
Compression rejected snappy was chosen with a non-Parquet format. Use gzip or none, or switch the format to Parquet.
Validate SQL fails The statement is not a read-only SELECT, or a table/column is missing or unqualified. Qualify names with the schema and remove any data-modifying statement.
Every run writes one file that overwrites the previous {ts} and {part} are missing from the filename template. Add both tokens.
Only part of the data is exported The job is in Incremental mode and the increasing column is not actually increasing. Pick a monotonic id or timestamp, or switch to Full.
A file appears with headers and no rows Expected behaviour — an empty result still writes one header-only file. None; treat it as "no new data".
A run appears to have run at the wrong hour Schedules are UTC, not local time. Recalculate the time from UTC.