2017-08-01 7 views
0

Je suis très nouveau à CYPHER QUERY LANGUAGE ET je travaille sur les relations entre les nœuds. J'ai un fichier CSV de table contenant plusieurs colonnes et 1000 lignes. Modèle de ma table est:FOREACH in cypher - neo4j

cdrType ANUMBER BNUMBER DUARTION  
2   123  456  10 
2   890  456  5 
2   123  666  2 
2   123  709  7 
2   345  789  20 

Je l'ai utilisé ces commandes pour créer des noeuds et des clés de propriété. Maintenant, j'ai besoin de créer une relation entre toutes les lignes de la table et je pense que la boucle FOREACH est la meilleure dans mon cas. J'ai créé cette requête mais cela me donne une erreur. Query est:

MATCH (a:ANUMBER),(b:BNUMBER) 
FOREACH(i in RANGE(0, length(ANUMBER)) | 
    CREATE UNIQUE (ANUMBER[i])-[s:CALLED]->(BNUMBER[i])) 

et l'erreur est la suivante:

entrée non valide '[': attendre un caractère d'identification, les espaces, NodeLabel, une carte de propriété, ')' ou un modèle de relation (line 3, colonne 29 (offset: 100)) "CREATE UNIQUE (a: unNombre [i]) - [s: APPELÉ] -> (b: BNUMBER [i]))"

I besoin relation pour chaque rangée. comme dans mon cas. 123 - appelé -> 456, 890 - appelé -> 456. J'ai donc besoin d'une représentation visuelle de cette donnée d'appel que quel numéro a appelé lequel. Pour cela, j'ai besoin de créer une relation entre toutes les lignes.

tout le monde a une idée pour résoudre ce problème?

Répondre

2

Qu'en est-:

LOAD CSV WITH HEADERS FROM "file:///2.csv" AS ROW 
CREATE (a:ANUMBER {aNumber:ROW.aNumber}) 
CREATE (b:BNUMBER {bNumber:ROW.bNumber}) 
MERGE (a)-[:CALLED]->(b); 

Ce n'est pas plus complexe que cela i.m.o.

Espérons que cela aide!

Cordialement, Tom

+0

Cela a fonctionné, Merci compagnon –