【问题标题】:Load Gephi input CSV in Neo4j在 Neo4j 中加载 Gephi 输入 CSV
【发布时间】:2016-06-03 15:00:35
【问题描述】:

我创建了一个与 Gephi 兼容的 csv 文件(节点和边文件)并将图形导入 Gephi。但是,该图具有 geph 不支持的平行边。为此,我搬到了 Neo4j。但是,我发现很难将用于 Gephi 的 csv 文件导入到 Neo4j 中。

我查看了 Neo4j 文档以导入 csv 文件,但它以 rdms 样式考虑这些文件。

请帮助在 Neo4j 中加载边缘和节点 csv 文件。

示例节点文件:

Id;attr1;attr2
2;23;A
1;34;B

示例边缘文件:

 Source;Target;attr3
 1;2;Plays

【问题讨论】:

    标签: csv neo4j gephi


    【解决方案1】:

    看看 Cypher 的LOAD CSV functionality。使用您的示例文件,将数据加载到 Neo4j 中的 Cypher 语句将是这样的:

    首先,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+,默认情况下,文件 url 相对于 $NEO4j_HOME 中的 import 目录。

    然后创建关系:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多