2017-05-18 68 views
0

大家好!如果值爲1,則在導入期間創建關係Neo4J

我的任務是將RDBM轉換爲圖形數據庫以進行測試。我正在使用Neo4J,並已成功地將各種表導入適當的節點。但是,當涉及到部門節點時,我遇到了一些小問題。某個部門與特定部門合作。在RDBMS模型中,這是一個簡單的名爲Is_Partner的列,因爲該數據庫最初是在考慮到一個合作伙伴的情況下設置的(因此整體而言:轉移到Graph數據庫的東西)。

我需要做的是匹配Is_Partner值爲1的所有部門,並從Is_Partner中值爲1的合作伙伴分配關係並將其分配給特定合作伙伴(Edge:ABBR,Value:HR )。我寫劇本,但它告訴我,這是成功的,但0編輯時...

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row 
MATCH (partner:Department {DepartmentID: row.DepartmentID}) 
WHERE row.IS_PARTNER = "1" 
MERGE (partner)-[:IS_PARTNER_OF]->(Department{ABBR: 'HR'}); 

我很新的圖形數據庫,但我知道關係數據庫相當不錯。任何幫助,將不勝感激。

謝謝您的時間,

吉姆·佩裏

+0

這是對嗎? '匹配(夥伴:部門{departmentID:row.DepartmentID})'。你爲什麼把一個':Department'分配給一個名爲partner的變量? –

回答

2

沒有與您的查詢的幾個問題。如果要過濾CSV,請使用WITH語句,並使用WHERE過濾器。另外你想分開MERGE HR部門節點,然後MERGE關係分開。

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row 
WITH row WHERE row.IS_PARTNER = "1" 
MATCH (partner:Department {DepartmentID: row.DepartmentID}) 
MERGE (dept:Department{ABBR: 'HR'})) 
MERGE (partner)-[:IS_PARTNER_OF]->(dept); 

如果仍然返回no results/changes,看看如果你的MATCH語句返回任何東西,因爲這通常是問題。

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row 
WITH row WHERE row.IS_PARTNER = "1" 
MATCH (partner:Department {DepartmentID: row.DepartmentID}) 
RETURN partner