首页 文章

如何在neo4j中遍历csv文件

提问于
浏览
0

https://raw.githubusercontent.com/saurabhkumar1903/neo4j/master/alterFile/sampletestoutput1.csv

这是显示我预期输出的图像的链接:[https://i.imgur.com/x6CYdfU.jpg]我在纸上绘制它只是为了显示预期的输出 .

[我有一个包含节点列表的csv文件,其中每一行表示第[0]行节点与节点的所有其他列表的关系2,line 2,line [3] ..... line [4500] in那条线]

例如 . -1,3,4,5,7,8-

2,4,5,11

4,10,11,15

这里的节点在 line[0] i.e. "1" has a directed relationship with nodes at line[2] i.e "3" as a friend, nodes at line[4], i,e."4" as a friend, nodes at line[6], i,e."5" as a friend,

我想要做的是我想在neo4j中显示每个节点之间建议的朋友关系 .

我无法弄清楚的是如何迭代整个csv文件以及捕获csv文件每行上每个节点之间的关系 .

1 回答

  • 0

    如果你想确保 id 首先出现在 id 之间(在 line 中)和之后出现id的人(在同一个 line 中)之间存在 HAS_FRIEND 关系,那么这样的事情应该有效:

    LOAD CSV FROM 'file:///friends.csv' AS line
    MERGE (p:Person {id: TOINT(line[0])})
    FOREACH(id IN line[1..] |
      MERGE(f:Person {id: TOINT(id)})
      MERGE (p)-[:HAS_FRIEND]-(f))
    

    此查询假定您只需要任意2个节点之间的单个 HAS_FRIEND 关系 . 因此,关系的 MERGE 没有指定方向 . 这样,如果在任一方向上已经存在这样的关系,则不会创建新的关系 .

    此外, TOINT 函数用于将id值转换为整数(因为 LOAD CSV 会自动将所有值视为字符串) . 如果您不需要该转换,则可以删除函数调用 .

相关问题