Neo4j导入节点和关系

时间:2016-03-31 21:00:14

标签: csv neo4j relationships

您好我一直在尝试建立一个类似社交网络的图形数据库我的问题是我可以从名为Messages.csv的csv文件创建节点然后使用Messages.csv创建与用户的关系吗? / p>

这是我创建用户的第一个import语句:

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]});

然后我使用以下方法导入消息:

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]});

此时所有节点都正确显示。

然后我尝试从消息csv文件中的其他字段创建关系,这些是与UserID相对应的SenderID和RecipientID,但是当我运行以下语句时,它不执行任何操作:

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);

有人可以建议我做错了吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您的第三个查询使用了错误的属性名称。试试这个:

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);