【问题标题】:Use CSV to populate Neo4j使用 CSV 填充 Neo4j
【发布时间】:2012-12-04 16:45:11
【问题描述】:

我是 Neo4j 的新手。我是这个图形数据库的学习者。我需要将 csv 文件加载到 Neo4j 数据库中。我从 2 天开始尝试,我无法找到将 csv 文件读入 Neo4j 的好信息。请建议我将 csv 文件读入 Neo4j 的示例代码或博客。

示例: 假设我有一个 csv 文件,这样我们如何将它读入 Neo4j

id  name    language
1   Victor Richards West Frisian
2   Virginia Shaw   Korean
3   Lois Simpson    Belarusian
4   Randy Bishop    Hiri Motu
5   Lori Mendoza    Tok Pisin

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    你可以试试https://github.com/sroycode/neo4j-import

    这会直接从一对 CSV 文件中填充数据(条目必须用逗号分隔)

    构建:(你需要 maven)

    sh build.sh
    

    nodes 文件有一个必填字段 id 和您喜欢的任何其他字段

    NODES.txt
    id,name,language
    1,Victor Richards,West Frisian
    2,Virginia Shaw,Korean
    3,Lois Simpson,Belarusian
    

    关系文件有 3 个必填字段 from,to,type。假设您有一个字段年龄(长整数)和信息,关系文件将如下所示

    RELNS.txt
    from,to,type,age@long,info
    1,2,KNOWS,10,known each other from school
    1,3,CLUBMATES,5,member of country club
    

    跑步:

    sh run.sh graph.db NODES.txt RELNS.txt
    

    将在当前文件夹中创建graph.db,您可以将其复制到neo4j数据文件夹中。

    注意: 如果你使用的 neo4j 是 1.6.* 之后的版本,请在 conf/neo4j.properties 中添加这一行

    allow_store_upgrade = true
    

    玩得开心。

    【讨论】:

      【解决方案2】:

      请看https://github.com/jexp/batch-import

      可以作为起点

      【讨论】:

      【解决方案3】:

      由于源数据结构和目标数据结构不同,因此无法将 CSV 数据一般地加载到 Neo4j 中:CSV 数据是表格数据,而 Neo4j 保存图形数据。

      为了实现这样的导入,您需要添加一个单独的步骤来将表格数据转换为某种形式的图形(例如树),然后才能将其加载到 Neo4j 中。进一步以树形结构为例,下面的页面展示了如何将 XML 数据转换为 Cypher,然后可以直接针对 Neo4j 实例执行。

      http://geoff.nigelsmall.net/xml2graph/

      如果有帮助,请随意使用此工具(请记住,它只能处理小文件),但这当然需要您先将 CSV 转换为 XML。

      干杯

      奈杰尔

      【讨论】:

      • 非常漂亮的工具。希望看到在大型数据集上的工作;)
      • 我最近向 py2neo 添加了选项来加载 XML (book.py2neo.org/en/latest/geoff.html#module-functions)。这本质上是对上面 xml2graph 页面的 python 重写。
      • 非常厨艺。我会检查一下
      • 所以基本上 Neo4j 太新了,你必须编写自己的 CSV 导入器?
      【解决方案4】:

      neo4j 可能没有已知的 CSV 导入器,您必须自己导入:

      我通常自己通过 gremlin 的 g.loadGraphML();功能。 http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html#rest-api-load-a-sample-graph

      我使用一些外部脚本将我的数据解析为 xml 语法并加载特定的 xml 文件。您可以在此处查看语法: https://raw.github.com/tinkerpop/gremlin/master/data/graph-example-1.xml 解析一个 100mb 的文件需要几分钟时间。

      在您的情况下,您需要做的是一个简单的二分图,其顶点由用户和语言组成,以及“说话”的边缘。如果你知道一些编程,然后创建 用户节点 参数 id, name |具有参数名称的唯一语言节点 | 关系,您需要将每个用户与特定语言联系起来。请注意,用户可以是重复的,而语言不能。

      【讨论】:

        【解决方案5】:

        我认为您的问题过于笼统。你的 csv 文件包含什么? csv 文件内容的逻辑含义可能会有很大差异。具有 ID 的两列示例,表示相互连接的实体。

        3921 584 831 9891 3841 92 ...

        在这种情况下,您可以编写一个 BatchInserter 代码 sn-p 来更快地导入它,请参阅 http://docs.neo4j.org/chunked/milestone/batchinsert.html

        或者您可以使用常规的 GraphDatabaseService 导入,事务大小为数千个插入以提高性能。在http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded.html 了解如何设置和使用图形数据库。

        【讨论】:

        • 您好,请检查上述文件。我有更新示例 csv 文件。我已经浏览了你提到的上述链接。但我无法理解它是如何读取 csv 文件的
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-29
        • 2017-03-11
        • 2019-09-29
        • 2018-10-03
        • 2017-10-22
        • 1970-01-01
        相关资源
        最近更新 更多