【发布时间】:2015-07-04 12:06:53
【问题描述】:
我正在使用 here 中描述的 py2neo 的 csv 批量导入将 rdb 转换为 neo4j。我这样组织代码:
delivery = "Delivery.csv"
graph = Graph("http://localhost:7474/db/data/")
graph.cypher.execute("CREATE CONSTRAINT ON (delivery:Delivery) ASSERT delivery.name IS UNIQUE")
with open(delivery, 'r+') as in_file:
reader = csv.reader(in_file, delimiter=';')
next(reader, None)
batch = graph.cypher.begin()
try:
i = 0;
j = 0;
for row in reader:
if row:
name = strip(row[0])
created_by = strip(row[1])
created_on = strip(row[2])
description = strip(row[3])
delivered_to = strip(row[4])
delivered_by = strip(row[5])
barcode = strip(row[6])
query = """
merge (delivery:Delivery {name:{a}})
merge (email:Email {email:{b}})
merge (created_on:Created_On {created_on:{c}})
merge (description:Description {describe:{d}})
merge (email:Email {email:{e}})
merge (email:Email {email:{f}})
merge (barcode:Barcode {code:{g}})
##and there are some relationships##
"""
batch.append(query, {"a": delivery, "b": created_by, "c": created_on "d": description, "e": delivered_to,
"f": delivered_by, "g": barcode})
.........................................................
.........code goes as described in the hypherlink........
“email”节点之前是从另一个“people.csv”文件创建的,并且“email”节点存在唯一性约束。在上述行中,我想通过关系将“created_by”、“delivered_to”和“delivered_by”节点与之前创建的“email”节点合并。当我运行代码时,它给出了错误email already declared,并且没有从 csv 创建任何节点。如何组织密码查询以防止此错误?谢谢。
【问题讨论】: