从单个csv文件在Neo4j中创建关系

时间:2016-09-29 23:23:34

标签: csv neo4j cypher

我正在尝试将单个csv加载到Neo4j数据库中。我有followed this guideline但仍然无法理解为什么不适合我。

我可以正确地创建节点(它的属性是除了一个之外的所有列),我想在所有节点之间建立一个关系,只剩下没有添加到节点的属性。

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 个答案:

答案 0 :(得分:1)

以下子句可能永远不会匹配任何东西(因此不会创建任何关系):

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

这是因为您现有的POST个节点有id个值(例如," 1165524631240624607_638926073"来自row.instaGramId),这些值可能与您的row.googleLabel_list不同{1}}值(例如," [卡通,漫画,艺术品]")。