从一个csv文件在Neo4j中创建关系
问题描述:
我想将一个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);
答
下列条款将可能永远不会匹配任何内容(因此没有关系将永远不会创建):
MATCH (objects:Post {id: row.googleLabel_list})
这是因为您现有的POST
节点具有id
值(例如,“1165524631240624607_638926073”来自row.instaGramId
),这些值可能看起来不像您的row.googleLabel_list
值(例如,“[卡通,漫画,艺术作品]”)。
'MATCH(post:Post {id:row.instaGramId})'不会匹配任何东西,因为该属性被称为'instaGramId',而不是'id'。 –
非常感谢您的回答。我将'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
也许。 ..我必须创建'googleLabel_list'属性中的新节点吗? – EnriqueH