2016-05-15 67 views
0

以下是我通過從csv文件讀取來創建neo4j關係的代碼。將現有的neo4j與csv進行比較,並從csv添加缺失的節點和關係

import csv 
from py2neo import neo4j, cypher, authenticate, Graph 
from py2neo import node, rel 
import py2neo 
authenticate("localhost:7474", "neo4j", "bhatt1234") 
graph_db = neo4j.Graph("http://localhost:7474/db/data/") 
ifile = open('agent_send.csv',"rb") 
reader = csv.reader(ifile) 
rownum = 0 
for row in reader: 
colnum = 0 
for col in row: 
rel = graph_db.merge({)) 
rownum += 1 
ifile.close() 

SO,

我希望建立一個流程做從CSV每天進口已經exisiting新4J。爲此,我需要使用merge()語句。但我正努力在py2neo中使用合併。我需要使用我的csv和我的neo4j db中已有的節點和關係之間的合併。

:START_ID(Agent),:END_ID(Agent),TXN_KEY,Amount,SendTime,PayTime,:TYPE 
     AEX053163,AEX010922,5000000000107593411,20.0,1361439,1362963.0,Agent_Send 
AKJ063072,AS1034942,5000000000108495674,220.0,1361434,1362369.0,Agent_Send 
ADT326742,AMX002998,5000000000106488543,1000.0,1361435,1363053.0,Agent_Send 
ARA031639,AED100363,5000000000106029876,1669.0,1361424,1362506.0,Agent_Send 
AKC403616,ADJ122111,5000000000107872144,180.0,1361415,1362680.0,Agent_Send 

上面是一個有關係的CSV文件。那麼,我該如何把這個關係放在g.merge()下?

+0

你正在使用哪個版本的neo4j/py2neo? –

回答

0

所以,我能夠通過使用LOAD CSV達到的結果。在現有的數據庫中進行日常ETL是非常方便的工具。

0

create()函數返回創建的所有實體具有的參數的數目的長度的一個元組。

您試圖元組(其長度爲5,你的情況)解壓到三個變量:Agent,Agent,rel

嘗試將結果存儲在一個單一變量:

result = graph_db.create(...) 

for r in result: 
    print(r) 
+0

嗨,將結果存儲在一個變量中只是創建節點而不是它們之間的任何關係。 –

+0

然後你做了一些錯誤的節點/ rel定義。你的錯誤與創建關係無關。 –

+0

請參閱我最近編輯的問題。 –