如何在neo4j中遍历csv文件

时间:2018-01-31 05:02:58

标签: csv neo4j graph-databases

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

这是指向显示我的预期输出的图片的链接:[https://i.imgur.com/x6CYdfU.jpg]我已将其绘制在纸上以显示预期的输出。

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

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

Create procedure [dbo].[sp_item_alreadyex]
    @catname nvarchar(50),
    @proname nvarchar(50)
as
begin
    select * 
    from Item 
    where Item_Name = @proname and Category = @catname
end

此处节点位于 2,4,5,11 4,10,11,15

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

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

1 个答案:

答案 0 :(得分:0)

如果您想确保HAS_FRIEND首先出现在id之内的人与之后出现ids的人(line之间存在line关系这样的事情应该有效:

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会自动将所有值视为字符串)。如果您不需要该转换,则可以删除函数调用。