CRDB Schema Exporter
A CLI tool to export schema definitions (DDL) and data from CockroachDB into SQL, JSON, YAML, or CSV formats. Supports secure TLS connections, per-table output, schema diffing, archive packaging, and row-level data export with batching and compression.
Features
- Export tables, views, sequences, and user-defined types
- Output formats: SQL, JSON, YAML
- Optional: per-object files
- Optional: output archive (.tar.gz)
- Optional: schema diff
- Optional: data export with SQL
INSERT INTOor CSV format - Row limits and GZIP compression support for data
- Secure connection with TLS certificates
Installation
pip install crdb-schema-exporter
Usage
crdb-schema-exporter --db=mydb [options]
Key Options
--db(required) – CockroachDB database name--host– CRDB host (default: localhost)--certs-dir– Path to TLS certificate directory--tables– Comma-separated list of tables (db.table1,db.table2,...)--format– Output format: sql (default), json, yaml--per-table– Output individual files per object--archive– Package output directory into a .tar.gz file--diff– Compare exported schema against another SQL file--parallel– Enable parallel exports--log-dir– Directory to store log files (default:logs/)
Data Export Options
--data– Enable table data export--data-format– Format:sqlorcsv--data-split– Save each table's data in a separate file--data-limit– Limit number of rows exported per table--data-compress– Compress CSV as.csv.gz(only if--data-format=csv)
Example
Export schema + data as gzipped CSV, with limits:
crdb-schema-exporter \
--db=movr \
--data \
--data-format=csv \
--data-limit=1000 \
--data-compress \
--per-table \
--archive \
--verbose
Output
You can also generate a diff file from schema exports using:
crdb-schema-exporter --db=movr --diff=path/to/previous_schema.sql
This will display the differences and optionally write to:
crdb_schema_dumps/movr/movr_schema.diff
Schema and data files are written to:
crdb_schema_dumps/<db_name>/
Example:
crdb_schema_dumps/movr/movr_schema.sql
crdb_schema_dumps/movr/users.csv.gz
📆 Example: Exporting CSV Data
(venv) ➔ crdb-schema-exporter git:(main) ✗ crdb-schema-exporter --db movr --data --data-format csv --data-split
2025-05-27 21:32:28,200 [INFO] Logging to file: logs/crdb_exporter.log
2025-05-27 21:32:28,367 [INFO] Exported data for movr.promo_codes to crdb_schema_dumps/movr/promo_codes.csv
2025-05-27 21:32:28,385 [INFO] Exported data for movr.rides to crdb_schema_dumps/movr/rides.csv
2025-05-27 21:32:28,397 [INFO] Exported data for movr.user_promo_codes to crdb_schema_dumps/movr/user_promo_codes.csv
2025-05-27 21:32:28,410 [INFO] Exported data for movr.users to crdb_schema_dumps/movr/users.csv
2025-05-27 21:32:28,426 [INFO] Exported data for movr.vehicle_location_histories to crdb_schema_dumps/movr/vehicle_location_histories.csv
2025-05-27 21:32:28,439 [INFO] Exported data for movr.vehicles to crdb_schema_dumps/movr/vehicles.csv
Contents of the output directory:
(venv) ➔ crdb-schema-exporter git:(main) ✗ cd crdb_schema_dumps/movr
(venv) ➔ movr git:(main) ✗ ls -lrt
-rw-r--r-- movr_schema.sql
-rw-r--r-- promo_codes.csv
-rw-r--r-- rides.csv
-rw-r--r-- user_promo_codes.csv
-rw-r--r-- users.csv
-rw-r--r-- vehicle_location_histories.csv
-rw-r--r-- vehicles.csv
Use
--data-compressto generate.csv.gzversions.
Metadata
Release files for crdb-schema-exporter 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| crdb_schema_exporter-0.2.1.tar.gz | 8.0 kB | Without provenance | Details for crdb_schema_exporter-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| crdb_schema_exporter-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for crdb_schema_exporter-0.2.1-py3-none-any.whl |
Total release size: 16.8 kB
Release files / crdb_schema_exporter-0.2.1.tar.gz
| Download URL | crdb_schema_exporter-0.2.1.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a619cf5104d27a5765b2b33b19b4d40f77827a4c5e56396613265662c316fe35
|
|
BLAKE2b-256 checksum How to use checksums |
8bf3ab8ac9c59acf1f3c603d693fd6d582d7e1605d15b026cf7e62de6882dbc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.6
|
Release files / crdb_schema_exporter-0.2.1-py3-none-any.whl
| Download URL | crdb_schema_exporter-0.2.1-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e638abb5ff7efe7c9e5dfd43c6a402c3a6401f7c7e7b0555a23823b5071dc8cd
|
|
BLAKE2b-256 checksum How to use checksums |
537b6117017eacadf4a6dac9754eb85cb5af0692cefc53b2aaab43eecc5a65cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.6
|
Security for crdb-schema-exporter 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.