将现有的neo4j与csv进行比较,并从csv添加缺失的节点和关系

问题描述:

以下是我通过从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? –

所以,我能够通过使用LOAD CSV达到的结果。在现有的数据库中进行日常ETL是非常方便的工具。

create()函数返回创建的所有实体具有的参数的数目的长度的一个元组。

您试图元组(其长度为5,你的情况)解压到三个变量:Agent,Agent,rel

尝试将结果存储在一个单一变量:

result = graph_db.create(...) 

for r in result: 
    print(r) 
+0

嗨,将结果存储在一个变量中只是创建节点而不是它们之间的任何关系。 –

+0

然后你做了一些错误的节点/ rel定义。你的错误与创建关系无关。 –

+0

请参阅我最近编辑的问题。 –