2016-03-31 2 views
0

Salut J'ai essayé de mettre en place une base de données graphique qui sera quelque chose comme un réseau social ma question est que je peux créer des nœuds à partir d'un fichier CSV appelé Messages.csv puis créer les relations avec les utilisateurs en utilisant Messages.csv?Neo4j importer pour les nœuds et les relations

Voici ma première déclaration d'importation pour créer les utilisateurs:

USING PERIODIC COMMIT 
LOAD CSV FROM 'file:/Users/Oliver/Desktop/Assessment_CSV/Assessment_table_Users.csv' AS csvLineB 
CREATE (n:Users { 
    UserID: csvLineB[0], 
    Firstname: csvLineB[1], 
    Surname: csvLineB[2], 
    DOB: csvLineB[3], 
    Email: csvLineB[4], 
    Phone: csvLineB[5]}); 

j'importer ensuite les messages à l'aide:

USING PERIODIC COMMIT 
LOAD CSV FROM 'file:/Users/Oliver/Desktop/Assessment_CSV/Assessment_table_Messages.csv' AS csvLineD 
CREATE (n:Message { 
    MessageID :csvLineD[0], 
    MessageContent:csvLineD[1]}); 

Tous les nœuds apparaissent correctement à ce stade.

Je suis alors essayez de créer les relations des champs supplémentaires dans le fichier csv messages ceux-ci sont les SenderID et recipientid qui correspondent à celui du UserID, mais quand je lance la déclaration suivante, il ne fait rien:

USING PERIODIC COMMIT 
LOAD CSV FROM 'file:/Users/Oliver/Desktop/Assessment_CSV/Assessment_table_Message.csv' AS csvLineE 
MATCH (sender:Users) 
WHERE sender.id = csvLineE[3] 
MATCH (receiver:Users) 
WHERE receiver.id = csvLineE[2] 
MATCH (msg:Message) 
WHERE msg.id = csvLineE[0] 
MERGE(sender)-[:SENT]->(msg)<-[:RECEIVED]-(receiver); 

Quelqu'un pourrait-il conseiller sur ce que je fais mal?

Toute aide est très appréciée.

Répondre

0

Votre troisième requête utilise les mauvais noms de propriété pour les ID. Essayez ceci:

USING PERIODIC COMMIT 
LOAD CSV FROM 'file:/Users/Oliver/Desktop/Assessment_CSV/Assessment_table_Message.csv' AS csvLineE 
MATCH (sender:Users) 
WHERE sender.UserID = csvLineE[3] 
MATCH (receiver:Users) 
WHERE receiver.UserID = csvLineE[2] 
MATCH (msg:Message) 
WHERE msg.MessageID = csvLineE[0] 
MERGE(sender)-[:SENT]->(msg)<-[:RECEIVED]-(receiver); 
+0

Merci qui a fonctionné, je ne peux pas croire que j'ai manqué quelque chose d'aussi simple. – randomer