我创建了一个兼容Gephi的csv文件(node和edge fle),并在Gephi中导入了图形。但是,图形具有平行边缘,geph不支持。为此,我搬到了Neo4j。但是,我发现在Neo4j中导入用于Gephi的csv文件很难导入。
我查看了Neo4j文档以导入csv文件,但是它以rdms样式考虑这些文件。
请帮助在Neo4j中加载边缘和节点csv文件。
示例节点文件:
Id;attr1;attr2
2;23;A
1;34;B
示例边缘文件:
Source;Target;attr3
1;2;Plays
答案 0 :(得分:1)
看看Cypher的LOAD CSV functionality。使用您的示例文件,Cypher语句将数据加载到Neo4j中将是这样的:
首先,标识/属性上的create a uniqueness constraint标识唯一ID(我只是在这里使用Person
标签,但更改为适合您域名的内容):
CREATE CONSTRAINT ON (p:Person) ASSERT p.personID IS UNIQUE;
然后遍历nodes.csv
文件,为csv文件中的每一行创建一个节点:
LOAD CSV WITH HEADERS FROM "file:///nodes.csv" AS row FIELDTERMINATOR ';'
MERGE (n:Person {personID: row.Id})
SET n.attr1 = row.attr1,
n.attr2 = row.attr2;
请注意,默认情况下,对于Neo4j 3.0+,文件网址相对于import
中的$NEO4j_HOME
目录。
然后创建关系:
LOAD CSV WITH HEADERS FROM "file:///rels.csv" AS row FIELDTERMINATOR ';'
MATCH (source:Person) WHERE source.Id = row.Source
MATCH (target:Person) WHERE target.Id = row.Target
MERGE (source)-[r:KNOWS]->(target)
SET r.attr3 = row.attr3;
有关详细信息/选项,请参阅this example in the docs。