2017-04-22 47 views
0
USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///dept_emp.csv" AS row 
MATCH (emp_no:Employee {emp_no: row.emp_no}) 
MATCH (dept_no:departments {dept_no: row.dept_no}) 
MERGE(Employee)-[:belongs_to{from_date: row.from_date,to_date: 
row.to_date}]->(departments); 

我想要使用此查詢節點的結構性質的關係查詢不Neo4j的工作

員工

[ 
gender M 
emp_no 10001 
birth_date 1953-09-02 
last_name Facello 
hire_date 1986-06-26 
first_name Georgi 

] 

節點個省是

[ 
dept_no d009 
dept_name Customer Service 
] 

結構的文件 dept_emp.csv是

(
emp_no dept_name from_date to_date 
) 

該ide不會顯示錯誤,只是開始處理,並在6小時後仍然處理。

回答

1

我想你可能會對匹配語法感到困惑,其中部分是變量,哪個是節點標籤。

MATCH (emp_no:Employee {emp_no: row.emp_no}) 

在上面的匹配中,:Employee是節點的標籤。 emp_no是綁定到:匹配的Employee節點的變量。

在隨後的查詢中,你有這樣的:

MERGE(Employee)-[:belongs_to{from_date: row.from_date,to_date: 
row.to_date}]->(departments); 

這裏的問題是,Employeedepartments沒有提到任何你所匹配之前,這是這些變量的第一次出現,這將會拋棄MERGE正在做的事情。實際上,它正在檢查所有節點之間的所有關係(併爲CSV中的每一行執行此操作),查找與給定日期屬性相關的belongs_to關係。

我建議你停止查詢(必要時通過殺死的Neo4j)清理數據(如果需要的話),然後再次嘗試,但嘗試用你以前綁定的變量MERGE:

MERGE(emp_no)-[:belongs_to{from_date: row.from_date,to_date: 
row.to_date}]->(dept_no); 

確保您有以下索引或唯一約束:Employee(emp_no)和:departments(dept_no)以進行快速匹配。

+0

thnx先生我是學生,我剛開始學習neo4j –