Is it possible to create/delete different databases in the graph database Neo4j like in MySQL? Or, at least, how to delete all nodes and relationships of an existing graph to get a clean setup for tests, e.g., using shell commands similar to rmrel
or rm
?
13 Answers
From Neo4j 2.3,
We can delete all nodes with relationships,
MATCH (n)
DETACH DELETE n
Currently there is no any option to create multiple databases in Noe4j. You need to make multiple stores of Neo4j data. See reference.
For anyone else who needs a clean graph to run a test suite - https://github.com/jexp/neo4j-clean-remote-db-addon is a great extension to allow clearing the db through a REST call. Obviously, though, don't use it in production!
Run your test code on a different neo4j instance.
- Copy your neo4j directory into a new location. Use this for testing. cd into the new directory.
- Change the port so that you can run your tests and use it normally simultaneously. To change the port open
conf/neo4j-server.properties
and setorg.neo4j.server.webserver.port
to an unused one. - Start the test server on setup. Do
./neo4j stop
andrm -rf data/graph.db
on teardown.
For more details see neo4j: How to Switch Database? and the docs.
Easiest answer is: NO
The best way to "start over" is to
- move to another empty data folder
or
- close Neo4j completely
- empty the old data folder
- restart Neo4j and set the empty folder as the data folder
There is a way to delete all nodes and relationships (as described here)
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
As of version 3 I believe it is now possible to create separate database instances and thus their location is slightly different.
Referring to:https://neo4j.com/developer/guide-import-csv/
The --into retail.db is obviously the target database, which must not contain an existing database.
On my Ubuntu box the location is in:
/var/lib/neo4j/data/databases
where I currently see only graph.db
which I believe must be the default.
If you have very large database,
`MATCH (n) DETACH DELETE n`
would take lot of time and also database may get stuck(I tried to use it, but does not work for a very large database). So here is how I deleted a larger Neo4j database on a linux server.
First stop the running Neo4j database.
sudo neo4j stop
Second, delete the databases folder and transactions folder inside data folder in neo4j folder. So where to find the neo4j folder? You can find the neo4j executable path by executing
which neo4j
. Check for data folder going through that path (it is located inside neo4j folder). And go inside the data folder and you will see databases and transactions folders.rm -rf databases/
rm -rf transactions/
Restart the Neo4j server
sudo neo4j start