2017-04-06 45 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