Overview
Bulk Import (LOAD CSV / neo4j-admin import)
LOAD CSV for incremental loads, neo4j-admin import for cold-start at terabyte scale.
Why it matters
LOAD CSV runs as a normal transaction (with batching via CALL IN TRANSACTIONS). neo4j-admin database import rebuilds store files from CSV at maximum speed but only on an offline DB.
Going deeper
Two import paths for two situations:
| Tool | Runs on | Speed | Use for |
|---|---|---|---|
LOAD CSV (with CALL { } IN TRANSACTIONS) | Live DB | Transaction-bound | Incremental / ongoing loads |
| neo4j-admin database import | Offline DB | Builds store files directly, fastest | One-time cold start at huge scale |
LOAD CSV WITH HEADERS FROM 'file:///orders.csv' AS row
CALL { WITH row
MERGE (c:Customer {id: row.customerId})
CREATE (c)-[:PLACED]->(:Order {id: row.orderId, total: toFloat(row.total)})
} IN TRANSACTIONS OF 10000 ROWS;
neo4j-admin import is dramatically faster because it bypasses the transaction log and writes store files directly — but it requires an empty/offline database, so it's a cold-start tool, not a daily ETL one. Choosing it for incremental loads means taking an outage you didn't need.
