我有两个csv文件。第一个“ user_features.csv”包含“节点”及其14个功能,如下所示:
node_id,f1,f2,f3,f4,....f13
1045, 2, 3, 4, 5,.... 31
5042, 1, 2, 3, 4,.....25
我可以使用以下命令将其加载到Neo4j中:
using commit periodic 10000
load csv with headers from "file:///user_features.csv" as linecsv
create (n:user_features {name: linecsv.node_id, f1: linecsv.f1 .....})
现在,我还有一个名为“ train.csv”的文件,其数据具有以下形状:
node1_id,node2_id,is_related
1045,5042,1
1045,134,0
此处“ is_related”字段表明node1_id和node2_id之间存在连接。
我想使用此数据在加载的图上建立关系。但是我不明白如何使用“ is_related”字段的值。在这种情况下,Where子句会有所帮助吗?
还有另一种方法,通过对图形数据库中的“ is_related”字段= 1进行过滤,可以修改“ train.csv”文件。
但是是否可以使用'is_related'列的值在图上的node1和node2之间创建边?
答案 0 :(得分:1)
如果您应该对CSV文件不做任何操作,而它们的is_related
值却为0,这似乎很奇怪。为什么不只保留这些行(并完全消除is_related
列)?
但是,如果您确实只想在RELATED_TO
为1时创建is_related
关系,则可以执行以下操作:
LOAD CSV WITH HEADERS FROM "file:///train.csv" AS row
WITH row
WHERE row.is_related = 1
MATCH (n:user_features {name: row.node1_id}), (m:user_features {name: row.node2_id})
MERGE (n)-[:RELATED_TO]->(m)
此外,如果您在:user_features(name)
上有index,则此查询会更快。