Migrate into QuestDB
Tested with: QuestDB 10.0 on Databasezy · zb CLI 0.1
Sources: Self-hosted QuestDB (REST or Postgres-wire URL), CSV files, another Databasezy instance.
How the copy works
Section titled “How the copy works”Per table: recreate it from table_columns() and tables() (designated timestamp, partitioning, WAL, symbol
options, dedup keys), stream /exp CSV from the source straight into /imp on the target, then wait until the
target WAL has applied the import. A postgresql:// URL is accepted and mapped to the REST port 9000
(?http_port= overrides). Uploaded CSV files go through the same /imp.
Run it
Section titled “Run it”# --dry-run prints the preflight checklist and the exact plan without changing anythingzb migrate --from ./metrics.csv --engine questdb --include metrics --to inst_abcFollow it with zb migrate status <mig_id>, or in the portal under the instance’s Migrate in tab.
What is verified
Section titled “What is verified”count() per table and a hash of each table’s columns. Mismatches are listed in the result; nothing is switched for you.
Not carried over
Section titled “Not carried over”- Column types CSV cannot carry (BINARY, arrays) are not copied.
- Materialized views are not copied; recreate them after the copy.
- Parquet uploads are not accepted; upload CSV with a header row.
How migrations work covers preflight, verification and cutover; engine conversions covers moves between engines.