Docs menu · Guides

The arrow commands move data between a database and columnar files. Export snapshots a capability to Parquet, CSV, or JSON lines; import loads a file back into a primitive. Use them for backups, bulk loading, and handing data to analytics tools that read Arrow-compatible formats.

Exporting

arrow export takes a --primitive, a --format, and an output path:

strata ./users arrow export --primitive kv --format csv ./users.csv
{
  "format": "csv",
  "paths": [ "/path/to/users.csv" ],
  "primitive": "kv",
  "row_count": 3,
  "size_bytes": 135
}

--primitive accepts kv, json, event, vector, and graph; --format accepts parquet, csv, and jsonl. The file carries the row values plus their commit coordinates. The CSV above looks like this:

key,key_encoding,value,value_encoding,version,timestamp
user:1,utf8,alice,utf8,3,3
user:2,utf8,bob,utf8,4,4
user:3,utf8,carol,utf8,5,5

Narrow an export with the optional flags: --prefix restricts by key, document, vector, or node prefix; --limit caps rows; --collection <name> selects the vector collection; --graph <name> selects the graph; and --event-type <type> filters an event export.

Graph exports

A graph has two row shapes, so a graph export treats the path as a stem and writes a nodes file and an edges file:

strata ./social arrow export --primitive graph --graph social --format csv ./social
{
  "format": "csv",
  "paths": [ "/path/to/social_nodes.csv", "/path/to/social_edges.csv" ],
  "primitive": "graph",
  "row_count": 10,
  "size_bytes": 526
}

Importing

arrow import takes a --target primitive and an input file:

strata ./restored arrow import --target kv ./users.csv
{
  "batches_processed": 1,
  "file_path": "/path/to/users.csv",
  "rows_imported": 3,
  "rows_skipped": 0,
  "target": "kv"
}

--target accepts kv, json, and vector. The format is inferred from the file, or state it explicitly with --format <parquet|csv|jsonl>. The round trip is faithful — the keys and values written above read straight back:

strata ./restored kv get user:2
bob

Column mapping

By default the importer expects the same column layout that export produces. When you load a file from elsewhere, point it at the right columns:

  • --key-column <name> — the column to use as the key.
  • --value-column <name> — the column holding the value, document, or embedding.
  • --collection <name> — the destination collection for a vector import.

For example, importing exported JSON-lines documents by naming the key and document columns explicitly:

strata ./docs arrow import --target json --key-column key --value-column document ./docs.jsonl
{
  "batches_processed": 1,
  "file_path": "/path/to/docs.jsonl",
  "rows_imported": 2,
  "rows_skipped": 0,
  "target": "json"
}

rows_skipped counts rows that could not be mapped, so a nonzero value is worth inspecting.

agents: this page as markdown → /docs/guides/import-export.md