【问题标题】:How to insert Bulk data into Neo4j using Python如何使用 Python 将批量数据插入 Neo4j
【发布时间】:2013-09-26 17:13:59
【问题描述】:

我想使用 py2neo 将一些数据插入到 Neo4j 中。 Link 到数据文件。 我是Neo4j 的新手。有人能告诉我如何将批量数据插入Neo4j。实际上我想做Neo4j的性能测试.....

我已经尝试过了,但这只是针对小数据集...

from pprint import pprint
from py2neo import neo4j,node, rel
graph_db = neo4j.GraphDatabaseService()

def insert_data():
    die_hard = graph_db.create(
        node(name="Bruce Willis"),
        node(name="John McClane"),
        node(name="Alan Rickman"),
        node(name="Hans Gruber"),
        node(name="Nakatomi Plaza"),
        rel(0, "PLAYS", 1),
        rel(2, "PLAYS", 3),
        rel(1, "VISITS", 4),
        rel(3, "STEALS_FROM", 4),
        rel(1, "KILLS", 3),)
    pprint(die_hard)

insert_data()

错误:

src/test/java/org/neo4j/batchimport/TestDataGenerator.java:3: error: package org.junit does not exist
import org.junit.Ignore;
                ^
src/test/java/org/neo4j/batchimport/TestDataGenerator.java:14: error: cannot find symbol
@Ignore
 ^
  symbol: class Ignore
2 errors

【问题讨论】:

标签: python neo4j py2neo


【解决方案1】:

我强烈建议您使用代表“图形导出对象文件格式”的“Geoff”格式。

在这种方法中,您基本上会生成一个包含节点和关系信息的文本文件,然后用于在批量插入中填充数据库。

'Load2Neo'模块用于批量插入信息。

用过它,我可以说它非常快。请务必查看简单的文档here。只要你遵循语法规则,你就会有一个流畅的 Geoff 体验!

Geoff 由 Nigel Small 开发,他也是 Py2Neo(Neo4j 的 Python 驱动程序)的作者。如果您遇到问题并需要快速帮助,请确保将 Nigel 解雇为tweet。他帮忙!

【讨论】:

  • 我已经以 geoff 格式解析了我的数据,但是当我尝试运行批量加载命令行时:http://nigelsmall.com/load2neo 没有任何反应。我在我的 geoff 文件所在的同一目录中运行它(这与服务器不同的目录,这是一个问题吗?)并且我的服务器在 http://localhost:7474/ 上运行但没有任何反应。有人可以指出我在这里缺少什么吗?谢谢!
【解决方案2】:

不确定这是否是您遇到的问题,但是当我尝试您的示例时,我在 [name=] 语法上遇到了错误。传递给 node() 构造函数的是字典。 node() 构造函数有多种语法,我没有看到与您使用的语法相匹配的语法。所以,尝试使用这样的字典语法:

node({"name": "Bruce Willis"})

另外,我不确定你是否配置了默认的 neo4j url,但我必须在 new4j.GraphDatabaseService() 调用中指定连接点 url。

因此,您的代码如下所示:

from pprint import pprint
from py2neo import neo4j, node, rel
graph_db = neo4j.GraphDatabaseService('http://localhost:7474/db/data')

def insert_data():
    die_hard = graph_db.create(
        node({"name": "Bruce Willis"}),
        node({"name": "John McClane"}),
        node({"name": "Alan Rickman"}),
        node({"name": "Hans Gruber"}),
        node({"name": "Nakatomi Plaza"}),
        rel(0, "PLAYS", 1),
        rel(2, "PLAYS", 3),
        rel(1, "VISITS", 4),
        rel(3, "STEALS_FROM", 4),
        rel(1, "KILLS", 3),)
    pprint(die_hard)

insert_data()

【讨论】:

  • 我试过了,但我得到了这个错误:>>> from py2neo import neo4j, node, rel >>> g = neo4j.Graph() Traceback(最近一次调用最后一次):文件“”,第 1 行,在 文件“/Library/Python/2.7/site-packages/py2neo/core.py”,第 526 行,在 new uri = ServiceRoot().graph 中。 uri.string 文件“/Library/Python/2.7/site-packages/py2neo/core.py”,第 452 行,在图中 self.__graph = Graph(self.resource.metadata["data"]) KeyError: u'data '
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 2012-11-29
  • 2016-09-26
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多