Admin Tool

The Traverse Admin tool (traverse-admin) provides offline bulk import from CSV and Cypher files, plus update management.

CSV Import

Import CSV files into a new .tvdb database. Specify node files with --nodes LABEL=file.csv and edge files with --edges TYPE=file.csv:

traverse-admin import \
  --nodes Person=people.csv \
  --nodes Company=companies.csv \
  --edges WORKS_AT=employment.csv \
  -o ./data/company.tvdb

Options

FlagShortDescriptionDefault
--nodes LABEL=file.csvCSV file for nodes with the given label (repeatable)
--edges TYPE=file.csvCSV file for edges with the given type (repeatable)
--output <PATH>-oOutput .tvdb file path
--id-type <string|int>ID column type for cross-referencingstring
--delimiter <CHAR>CSV field delimiter (single character),
--skip-bad-rowsSkip rows that fail to parse instead of aborting

CSV Format

Node CSV files must include a header row. The :ID column is used as the node identifier for edge resolution. Columns starting with : (Neo4j meta columns) are skipped:

:ID,name,age
1,Alice,30
2,Bob,25
3,Carol,28

Edge CSV files must include :START_ID and :END_ID columns that reference node IDs:

:START_ID,:END_ID,since
1,2,2020
2,3,2021

Type Inference

Property values are auto-inferred from CSV data:

  • true / false → boolean
  • Integer values → 64-bit integer
  • Decimal values → 64-bit float
  • Empty cells → null (skipped)
  • Everything else → string

Cypher Import

Import a file of Cypher statements (one per line) into a new .tvdb database:

traverse-admin cypher-import \
  -i data.cypher \
  -o ./data/mydb.tvdb

Options

FlagShortDescriptionDefault
--input <FILE>-iCypher file (one statement per line)
--output <PATH>-oOutput .tvdb file path
--skip-errorsContinue on statement errors
--index LABEL:PROPPre-create an index (repeatable)

File Format

  • One statement per line (trailing semicolons are stripped)
  • Empty lines and // comment lines are skipped
  • Multi-line statements continue until ; or end-of-file

Auto-Indexing

When the first MATCH statement is encountered (after a series of CREATE statements), Traverse auto-creates indexes on all :Label {prop} patterns seen in preceding CREATEs. This avoids O(N) scans for edge creation.

You can override this with explicit --index flags, which are created before any Cypher statements execute:

traverse-admin cypher-import \
  -i data.cypher \
  -o output.tvdb \
  --index Person:id \
  --index Company:name

Tip: Pre-creating indexes with --index significantly speeds up imports that rely on MERGE or property lookups.

Update Checking

Check if a newer version of Traverse is available:

traverse-admin update

Download the latest version to the current directory:

traverse-admin update --download