2013-09-21 147 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 /發生。 有人能指出我在這裏錯過了什麼嗎?謝謝! –