Come eliminare / creare database in Neo4j?


104

È possibile creare / eliminare diversi database nel database grafico Neo4j come in MySQL? O, almeno, come eliminare tutti i nodi e le relazioni di un grafico esistente per ottenere una configurazione pulita per i test, ad esempio, utilizzando comandi di shell simili a rmrelo rm?

Risposte:


98

Puoi semplicemente rimuovere l'intera directory del grafico con rm -rf, perché Neo4j non memorizza nulla al di fuori di questo:

rm -rf data/*

Inoltre, puoi ovviamente iterare attraverso tutti i nodi ed eliminare le loro relazioni e i nodi stessi, ma potrebbe essere troppo costoso solo per i test ...


7
E se iterate su tutti i nodi, potrebbe essere una buona idea lasciare che il nodo di riferimento rimanga.
— nawroth

6
Dove si trova la directory del grafico?
— Pramod

3
@Pramod è nella directory dei dati della directory neo4j. Da non perdere
— devshorts

7
Su MacOSX con homebrew: /usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
— Ashley

5
Forse è una buona idea fermare il server neo4j prima di eseguire questo comando.
— John Bachir

98

comando ancora più semplice per eliminare tutti i nodi e le relazioni:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

11
+1 per la dichiarazione. Ma attenzione, solo perché elimini tutti i nodi, non significa che le etichette che hai usato siano completamente dimenticate. Il browser mostrerà comunque tutte le etichette. Idem per le proprietà del nodo e le etichette di relazione.
— Dilum Ranatunga

@DilumRanatunga 1. sai come far dimenticare a neo le etichette? 2. come possono persistere le proprietà del nodo se i nodi vengono eliminati o se le etichette delle relazioni persistono se le relazioni vengono eliminate?
— John Bachir

1
Non intendo i valori effettivi; Intendo i nomi delle proprietà stesse.
— Dilum Ranatunga

5
potrebbero esserci non solo nodi e bordi, ma anche indici nel DB, ed è più difficile sbarazzarsene. Inoltre, sono appena riuscito a rovinare un'istanza database mediante test ripetuti e massicci, incluse le eliminazioni, e sembra che l'eliminazione fisica dei file DB e il fatto che Neo4J li ricrea al riavvio apporti un netto miglioramento delle prestazioni.
— flusso

Ho esaurito la memoria su neo4j nel container docker.
— bolec_kolec

52

Da Neo4j 2.3,

Possiamo eliminare tutti i nodi con relazioni ,

MATCH (n)
DETACH DELETE n

Attualmente non esiste alcuna opzione per creare più database in Noe4j. È necessario creare più archivi di dati Neo4j. Vedi riferimento .


3
La migliore risposta se non vuoi ricorrere al file system.
— ThomasH

Il problema con questo approccio è che non cancellerà né vincoli né indici
— Davide

47

Creazione di un nuovo database in Neo4j

Prima di avviare la comunità neo4j fare clic sull'opzione Sfoglia

inserisci qui la descrizione dell'immagine

e scegli una directory diversa

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

e fare clic sul pulsante di avvio.

inserisci qui la descrizione dell'immagine

Nuovo database creato in quella directory


12

modo veloce e sporco che funziona bene:

bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start

11

Per chiunque altro abbia bisogno di un grafico pulito per eseguire una suite di test - https://github.com/jexp/neo4j-clean-remote-db-addon è un'ottima estensione per consentire la cancellazione del db tramite una chiamata REST. Ovviamente, però, non usarlo in produzione!


Sembra eliminare il nodo 0. Come posso ricrearlo?
— Il

1
In realtà, salta il nodo di riferimento ( github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/… ). Ma se il tuo nodo di riferimento non c'è più (e ne hai bisogno) dovrai iniziare con una directory dei dati pulita, poiché non c'è ancora una setRefenceNode()chiamata ( stackoverflow.com/questions/7186832/… ).
— Matt Luongo

7

Esegui il tuo codice di prova su un'istanza neo4j diversa.

  1. Copia la tua directory neo4j in una nuova posizione. Usalo per i test. cd nella nuova directory.
  2. Modificare la porta in modo da poter eseguire i test e utilizzarla normalmente contemporaneamente. Per modificare la porta aperta conf/neo4j-server.propertiese impostarla org.neo4j.server.webserver.portsu una inutilizzata.
  3. Avvia il server di prova durante l'installazione. Fai ./neo4j stope rm -rf data/graph.dballo smontaggio.

Per maggiori dettagli vedi neo4j: come cambiare database? e i documenti .


6

In Neo4j 2.0.0 il? non è più supportato. Utilizza invece PARTITA OPZIONALE:

START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;

6

La risposta più semplice è: NO

Il modo migliore per "ricominciare" è

  • spostarsi in un'altra cartella di dati vuota

o

  • chiudi Neo4j completamente
  • svuota la vecchia cartella dati
  • riavvia Neo4j e imposta la cartella vuota come cartella dei dati

C'è un modo per eliminare tutti i nodi e le relazioni (come descritto qui )

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

1

In 2.0.0 -M6 è possibile eseguire il seguente script Cypher per eliminare tutti i nodi e le relazioni:

start n=node(*)
match (n)-[r?]-()
delete n,r

2
Sfortunatamente questo produce un errore nell'ultima versione 2.0.0: SyntaxException: il punto interrogativo non è più utilizzato per i modelli opzionali - usa invece OPTIONAL MATCH (riga 1, colonna 26) ==> "start n = node (*) match (n ) - [r?] - () cancella n, r "
— richj

Non capisco i voti negativi , poiché la risposta dice chiaramente in 2.0.0 -M6 , che era l'ultima versione quando ho risposto alla domanda, mentre altri hanno fornito risposte corrette per l' ultima build attualmente .
— Martin Seeler

1

A partire dalla versione 3, credo che ora sia possibile creare istanze di database separate e quindi la loro posizione è leggermente diversa.

Riferendosi a: https://neo4j.com/developer/guide-import-csv/

Il --into retail.db è ovviamente il database di destinazione, che non deve contenere un database esistente.

Sulla mia scatola di Ubuntu la posizione è in:

/var/lib/neo4j/data/databasesdove attualmente vedo solo quello graph.dbche credo debba essere l'impostazione predefinita.


0

Puoi eliminare i tuoi file di dati e se vuoi procedere in questo modo, ti consiglio di eliminare solo il tuo graph.db, per esempio. Altrimenti rovinerai le tue informazioni di autenticazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.