如何使用Python将批量数据插入到Neo4j中

时间:2013-09-21 10:36:15

标签: python neo4j py2neo

我想使用Neo4j将一些数据插入py2neoLink到数据文件。 我是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

2 个答案:

答案 0 :(得分:4)

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

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

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

使用它之后,我可以说它非常快。请务必查看简单文档here。只要您遵循语法规则,您就可以获得Geoff!

的流畅体验

Geoff由Nigel Small开发,他也是Py2Neo(Neo4j的python驱动程序)的作者。你遇到问题并希望得到快速帮助,确保你解雇Nigel tweet。他帮忙了!

答案 1 :(得分: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()