2015-04-24 7 views
5

Sto eseguendo alcune query di Neo4j cypher utilizzando neo4j-shell. Hanno lunghi tempi di esecuzione mentre sto importando file CSV di grandi dimensioni.Messaggi di stato di output nella console da cypher neo4j-shell

Desidero inviare alcuni messaggi alla console al termine di ogni fase dell'importazione, in modo da poter vedere l'avanzamento dell'importazione in fase di esecuzione senza dover attendere il completamento dell'esecuzione.

Ho controllato Cypher RefCard e non riesco a trovare un esempio di questo. Cypher supporta l'output nella finestra della console della shell?

risposta

1

La stringa "Ritorno" viene stampata due volte poiché la prima è l'intestazione e la seconda è il contenuto. È possibile utilizzare "AS" con apici inversi per cambiare l'intestazione per farlo sembrare meglio:

MATCH (n) 
DETACH DELETE n; 
RETURN "Existing data removed" AS `Action:`; 

Ancora meglio, è possibile combinare l'uscita operazione con il messaggio:

MATCH (n) 
DETACH DELETE n 
RETURN count(n) AS `Existing data removed:`; 
+0

Mi piace questo approccio. Semplice e facile. – Adam

0

Sarebbe bello, ma non credo sia possibile. In passato ho fatto ricorso al conteggio del numero di query cifrate e poi contando il numero di messaggi di successo nel terminale (ugh;)

La soluzione migliore è probabilmente scrivere uno script che instradi le query cifrate a il guscio uno per uno e le uscite intermedie.

(anche, si può avere questo coperto, ma per aiutare con le importazioni lenti ricordatevi di creare indici appropriati e avoid the eager!)

+0

ugh. questo è quello che devo fare anche io. può essere davvero così stupido? ancora alla ricerca di una soluzione! – ekkis

+0

Il downvoted come altre risposte mostra le possibilità ... – Adam

3

lo trovo un argomento davvero interessante. IMO il modo migliore per raggiungerlo in modo potente è quello di scrivere un plugin server:

  • Si crea un TransactionEventHandler che implementa l'TransactionEventHandler interface

  • Riceverete TransactionData che rappresenta ciò che è stato modificato durante la transazione

  • È possibile trasformare i cambiamenti in jSON

  • e infine li scrivono ai registri

  • attivare i registri nei appenders

0

hmm ... ok. puoi inserire le istruzioni RETURN per darti un indizio, ad es.

load cvs with headers from 'file1.csv' 
return 'file1' 
load cvs with headers from 'file2.csv' 
return 'file2' 

ecc

0

Ho fatto questo utilizzando RETURN. Ma ogni valore RETURN viene stampato due volte! Non sai cosa sta succedendo esattamente lì. Ma per il debug va bene.

RETURN "Removing existing data..."; 
MATCH (n) 
DETACH DELETE n; 
RETURN "Existing data removed";