2013-09-21 207 views
3

我想使用py2neo将一些数据插入Neo4jLink到数据文件。 我是Neo4j的新手。谁能告诉我如何批量数据插入到Neo4j。其实我想要做的Neo4j性能测试.....如何使用Python将批量数据插入到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 
+0

[在Python中使用Neo4j执行批量添加/插入操作的最快方法](http://stackoverflow.com/questions/12643662/fastest-way-to-perform-b​​ulk-add-insert-in- neo4j与蟒蛇) – zero323

+0

我已经尝试[批量导入](https://github.com/jexp/batch-import),但它不工作...任何人都可以帮我 –

+0

有没有任何标准的基准测试' Neo4j' –

回答

2

不知道这是否是您所遇到的问题,但是当我想你的样品,我的[名称=]语法有错误报道。传递给node()构造函数的是一个字典。 node()构造函数有多种语法,而且我没有看到与您使用的语法相匹配的语法。因此,尝试使用字典语法是这样的:

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

而且,我不知道,如果你已经配置了默认Neo4j的网址,但我有我的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() 
+0

我试过,但我得到这个错误:>>>从py2neo进口的Neo4j,节点,相对 >>> G = neo4j.Graph() 回溯(最近通话最后一个): 文件 “”,1号线, in 文件“/Library/Python/2.7/site-packages/py2neo/core.py”,第526行,在__new__中 uri = ServiceRoot().graph.uri.string File“/Library/Python/2.7/ site-packages/py2neo/core.py“,第452行,图 self .__ graph = Graph(self.resource。元数据[“数据”]) KeyError:u'data' – Patrick

4

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

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

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

使用它之后,我可以说它非常快。确保你看看简单的文档here。只要您遵循语法规则,您就可以顺利体验Geoff!

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

+0

我已经解析了geoff格式的数据,但是当我尝试运行Bulk Load命令行时:'http:// nigelsmall.com/load2neo'什么都没有发生。 我运行它在我的geoff文件所在的目录(与服务器不同,它是一个问题吗?),而我的服务器是在http:// localhost:7474 /发生。 有人能指出我在这里错过了什么吗?谢谢! –