2016-09-29 290 views
0

我想將一個csv加載到Neo4j數據庫中。我有followed this guideline但仍不明白爲什麼不爲我工作。從一個csv文件在Neo4j中創建關係

我可以正確創建節點(它的屬性是除一個之外的所有列),我想在所有節點之間建立一個只剩下沒有添加到節點的屬性的關係。

我在file.csv數據的樣子:

列,instaGramId,imageDateCreated,imageTagCount,ImageFilter的,googleLabel_list 0,1165524631240624607_638926073,1453161384,7,正常, 「[卡通,漫畫, 藝術品]」
...

我以下步驟:

步驟1:創建節點此工作正常

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row 
CREATE (:Post {instaGramId: row.instaGramId, 
    imageDateCreated: toInt(row.imageDateCreated), 
    imageTagCount: row.imageTagCount, 
    imageFilter: row.imageFilter}); 

只有屬性左邊是googleLabel_list,其必須是在一個不同的節點

步驟2:創建一個索引此我猜

CREATE INDEX ON :Post(instaGramId); 

第3步:創建關係這是不正常工作

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row 
MATCH (post:Post {id: row.instaGramId}) 
MATCH (objects:Post {id: row.googleLabel_list}) 
MERGE (post)-[:CONTAINS_OBJECTS]->(objects); 

回答

1

下列條款將可能永遠不會匹配任何內容(因此沒有關係將永遠不會創建):

MATCH (objects:Post {id: row.googleLabel_list}) 

這是因爲您現有的POST節點具有id值(例如,「1165524631240624607_638926073」來自row.instaGramId),這些值可能看起來不像您的row.googleLabel_list值(例如,「[卡通,漫畫,藝術作品]」)。

+0

'MATCH(post:Post {id:row.instaGramId})'不會匹配任何東西,因爲該屬性被稱爲'instaGramId',而不是'id'。 –

+0

非常感謝您的回答。我將'id'改爲'instaGramId',但沒有任何內容仍然匹配。爲了創建實例相同的CSV數據集的列之間的關係,我看到他們這樣做: '使用週期性COMMIT' '頁眉LOAD CSV FROM「文件:employees.csv」 AS row' 'MATCH (員工:員工{employeeID:row.EmployeeID})' 'MATCH(manager:Employee {employeeID:row.ReportsTo})' 'MERGE(employee) - [:REPORTS_TO] - >(manager);' – EnriqueH

+0

也許。 ..我必須創建'googleLabel_list'屬性中的新節點嗎? – EnriqueH