Neo4j compatible data migration and backup
NornicDB is fully compatible with Neo4j data formats, making migration seamless. This guide covers importing data from Neo4j and exporting data for backup or migration.
from neo4j import GraphDatabase
# Connect to NornicDB (same as Neo4j)
driver = GraphDatabase.driver(
"bolt://localhost:7687",
auth=("admin", "admin")
)
# Run Cypher queries - identical syntax
with driver.session() as session:
session.run("""
CREATE (n:Person {name: 'Alice', age: 30})
CREATE (m:Person {name: 'Bob', age: 25})
CREATE (n)-[:KNOWS {since: 2020}]->(m)
""")-- Create multiple nodes
UNWIND $nodes AS nodeData
CREATE (n:Person)
SET n = nodeData
-- Create relationships
UNWIND $relationships AS relData
MATCH (a:Person {id: relData.from})
MATCH (b:Person {id: relData.to})
CREATE (a)-[:KNOWS {since: relData.since}]->(b)# Import nodes from JSON
curl -X POST http://localhost:7474/db/nornicdb/tx/commit \
-H "Content-Type: application/json" \
-d '{
"statements": [{
"statement": "UNWIND $nodes AS n CREATE (:Person) SET p = n",
"parameters": {
"nodes": [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
}
}]
}'-- Export all nodes as JSON
MATCH (n)
RETURN labels(n) AS labels, properties(n) AS properties
-- Export with relationships
MATCH (n)-[r]->(m)
RETURN
labels(n) AS fromLabels,
properties(n) AS fromProps,
type(r) AS relType,
properties(r) AS relProps,
labels(m) AS toLabels,
properties(m) AS toProps# Export query results
curl -X POST http://localhost:7474/db/nornicdb/tx/commit \
-H "Content-Type: application/json" \
-d '{
"statements": [{
"statement": "MATCH (n:Person) RETURN n"
}]
}' | jq '.results[0].data'| Feature | Status | Notes |
|---|---|---|
| Cypher Queries | ✅ Full | All standard Cypher |
| Bolt Protocol | ✅ Full | v4.4 compatible |
| HTTP API | ✅ Full | Neo4j REST API |
| Transactions | ✅ Full | ACID compliant |
| Indexes | ✅ Full | B-tree and vector |
| Constraints | ✅ Full | Unique, exists |
All official Neo4j drivers work with NornicDB:
- Python:
neo4jpackage - JavaScript:
neo4j-driver - Java: Neo4j Java Driver
- Go:
neo4j-go-driver - .NET: Neo4j.Driver
-
Export from Neo4j:
CALL apoc.export.json.all("export.json", {})
-
Start NornicDB:
docker run -d -p 7474:7474 -p 7687:7687 nornicdb
-
Import to NornicDB:
# Use same driver/queries - just change connection URL
Same process in reverse - the formats are identical.
# Stop writes, create snapshot
docker exec nornicdb nornicdb backup /data/backup/
# Or via HTTP API
curl -X POST http://localhost:7474/admin/backup# Restore from backup
docker exec nornicdb nornicdb restore /data/backup/snapshot-20240101/curl -X POST http://localhost:7474/gdpr/export \
-H "Content-Type: application/json" \
-d '{"userId": "user123"}'curl -X POST http://localhost:7474/gdpr/delete \
-H "Content-Type: application/json" \
-d '{"userId": "user123"}'- Getting Started - Installation guide
- Cypher Queries - Query language reference
- API Reference - Complete API docs
Ready to migrate? → Getting Started