2017-04-06 23 views
0

我有两个csv文件,一个包含source_node中的两列,destination_node格式,另一个包含节点列表。现在,我想创建一个使用第一个文件的图形与从csv创建图形时排除一些节点

load csv with headers from "file:///C:/Users/neo4j_workspace/new_graph_db/import/sample_edges.csv" as table 
merge (a:Node{name:table.destination_node }) 
with table, a 
merge (b:Node{name:table.source_node}) 
with a, b 
merge (a)-[:relates]->(b) 

但我想其中两个源节点和目的节点是在第二CSV的列节点之间创建节点以及关系。我尝试使用WHERE作为

load csv with headers from "file:///C:/Users/neo4j_workspace/new_graph_db/import/sample_list.csv" as jobs_table 
with list 
load csv with headers from "file:///C:/Users/neo4j_workspace/new_graph_db/import/sample_edges.csv" as table 
with table, list 
merge(a:Node{name:table.destination_node }) 
with table, list, a 
merge (b:Node{name:table.source_node}) 
with list, a, b 
merge(a)-[:relates]->(b) 
where (a and b in list.nodenames) 

,但我才知道,在无法与使用合并。我知道CASE,但我无法使用它来形成正确的查询。我的数据库是空的开始。

回答

1

通过您尝试的方法,查询将在第一个CSV的所有行和第二个CSV的所有行之间创建笛卡尔积。这种方法表现不佳。我建议先分别处理每个文件,首先从第一个CSV创建所有节点,然后(在添加索引之后:节点(名称),如果它尚不存在)处理第二个CSV ,按名称匹配线路上的每个节点并合并关系。

+0

谢谢。我做了同样的事情,之后我意识到了。 – Sim101011