我正在尝试将带有AD组字符串的CSV解析为Neo4j。我正在使用python驱动程序并按照快速示例。
import csv
from neo4j.v1 import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "neo"))
def print_friends(tx, name):
for record in tx.run("MATCH (a:User) WHERE a.name = $name "
"RETURN a.name ORDER BY a.name", name=name):
print(record["a.name"])
def create_group(tx, name):
print "create group: " + name
tx.run("MERGE (g:Group {name: $name}) ", {"name": name})
def set_group_label(tx, name, label):
label = ":" + label
print "set label: " + name +" "+ label
tx.run("MATCH (g:Group) "
"WHERE g.name = $name "
"SET g $label", name=name, label=label)
with open('../transfer/ALLADUsersGroups_201704180501.csv', 'rb') as file:
reader = csv.reader(x.replace('\0', '') for x in file)
for i, row in enumerate(reader):
if i==102435:
with driver.session() as session:
session.write_transaction(create_group, row[1].split("=")[1])
session.write_transaction(set_group_label, row[1].split("=")[1], row[1].split("=")[0])
我正在尝试根据组的类型设置新标签,例如。 {CN,OU,DC等}。 但是我收到以下错误:
neo4j.exceptions.CypherSyntaxError: Unexpected end of input: expected an identifier character, whitespace or a relationship pattern (line 1, column 50 (offset: 49))
"MATCH (g:Group) WHERE g.name = $name SET g $label"
^
我做错了是不是司机出了问题?
我应该说我已经按照此处的安装说明进行操作:Neo4j Driver for Python
答案 0 :(得分:0)
设置标签的语法使用:
,如下所示:SET g:Thing
。但是,我不相信Cypher允许设置这样的动态标签。
您可能需要对此特定情况使用字符串连接,将标签字符串附加到查询中的适当位置,或者使用APOC Procedures从字符串中动态添加标签。