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
| Flag | Short | Description | Default |
|---|---|---|---|
--nodes LABEL=file.csv | — | CSV file for nodes with the given label (repeatable) | — |
--edges TYPE=file.csv | — | CSV file for edges with the given type (repeatable) | — |
--output <PATH> | -o | Output .tvdb file path | — |
--id-type <string|int> | — | ID column type for cross-referencing | string |
--delimiter <CHAR> | — | CSV field delimiter (single character) | , |
--skip-bad-rows | — | Skip 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
| Flag | Short | Description | Default |
|---|---|---|---|
--input <FILE> | -i | Cypher file (one statement per line) | — |
--output <PATH> | -o | Output .tvdb file path | — |
--skip-errors | — | Continue on statement errors | — |
--index LABEL:PROP | — | Pre-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