簡體   English   中英

使用py2neo將文本數據插入Neo4j

[英]Insert text data into Neo4j using py2neo

我想從一個文本文件中的數據插入到Neo4j使用py2neo.But是他們的方式創造,它已經exist.Is他們的任何py2neo路節點之前檢查CREATE UNIQUE例如

創建節點A到B創建節點A到C

然后,僅必須創建單個節點A並將其連接到B和C

insert_data.py

from pprint import pprint
from py2neo import neo4j,node, rel, cypher
#------------------------------------------------------------------------------ 

f = open('sample_dataset')
lines = f.readlines()
graph_db = neo4j.GraphDatabaseService()
print graph_db.get_reference_node()
try:
    for row in lines:    
        from_node = row.split('\t')[0].strip()
        to_node = row.split('\t')[1].strip()
        graph_db.create(
                        node(name=from_node),
                        node(name=to_node))                               
except Exception as e:
    print e

data.txt:

101 102
101 104
101 107
101 125
101 165
101 168
101 170
101 176
101 180
101 181
101 182
101 209
101 210
101 248
101 306
101 329
101 330
101 340
101 349
101 352
101 355
101 356
101 359
101 364
101 365
101 368
101 372
101 373
101 383
101 433
101 438
101 439
101 441
101 448
101 466
101 471
101 484
101 526

一種實現方法是使用CYPHER 2.0和py2neo。 在您的代碼中只需替換

graph_db.create

與此相關,查詢字符串的開頭表示CYPHER 2.0,它支持MERGE:

query = neo4j.CypherQuery(graph_db,
        """CYPHER 2.0 
            merge (n {name: {from}})
            merge(m {name: {to}}) 
            create unique (n)-[:relation]->(m)""")
result = query.execute( from = from_node, to = to_no)

通過合並n,僅當n不在數據庫中時才會創建n。 希望這可以幫助。

有多種方法可以通過py2neo管理唯一性,並且通過直接Cypher查詢和幾種包裝器方法都支持CREATE UNIQUE。 我最近在這個主題上寫了一篇博客文章,因此您可能可以從這里獲得一些指導:

http://blog.safaribooksonline.com/2013/08/07/managing-uniqueness-with-py2neo/

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM