neo4j - 在 python 中加载 csv 文件时尝试使用 SET += 时出现 Neo4j 错误
问题描述
所以我正在使用 python 将 csv 文件加载到 Neo4j。我的加载代码如下所示:
from neo4j import GraphDatabase
driver = GraphDatabase.driver("connection", auth=("name", "password"))
def add_data(tx):
tx.run("LOAD CSV WITH HEADERS FROM 'file:///C:/Users/Damian/PycharmProjects/NeoJ/DataMap.csv' AS Map \
MERGE (source {node_name: Map.source}) \
MERGE (destination {node_name: Map.destination}) \
MERGE (source)-[:FEEDS_INTO]->(destination)")
def add_other(tx):
tx.run("LOAD CSV WITH HEADERS FROM 'file:///C:/Users/Damian/PycharmProjects/NeoJ/Data.csv' AS Data \
Match (n {node_name: Data.dane}) \
MERGE (system {system_name: Data.system}) \
MERGE (scope {scope_name: Data.scope}) \
MERGE (process {process_name: Data.process}) \
MERGE (owner {owner_name: Data.owner}) \
MERGE (n)-[:UNDER_SYSTEM]->(system) \
MERGE (system)-[:UNDER_SCOPE]->(scope) \
MERGE (n)-[:HAS_PROCESS]->(process) \
MERGE (owner)-[:IS_OWNER_OF]->(n) ")
def add_data_properties(tx):
tx.run("LOAD CSV WITH HEADERS FROM 'file:///C:/Users/Damian/PycharmProjects/NeoJ/Data.csv' AS Data \
MATCH (n {node_name: Data.dane }) \
SET n.system += Data.system \
SET n.scope += Data.scope \
SET n.process += Data.process \
SET n.owner += Data.owner")
with driver.session() as session:
session.write_transaction(add_data)
session.write_transaction(add_other)
session.write_transaction(add_data_properties)
driver.close()
我得到的错误是:
neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: Invalid input '+': expected whitespace, comment, '(', '.' or '=' (line 1, column 147 (offset: 146))
"LOAD CSV WITH HEADERS FROM 'file:///C:/Users/Damian/PycharmProjects/NeoJ/Data.csv' AS Data MATCH (n {node_name: Data.dane }) SET n.system += Data.system SET n.scope += Data.scope SET n.process += Data.process SET n.owner += Data.owner" ^}
但是当我使用例如 SET n.system = Data.system 时,一切正常。有人知道如何解决这个问题吗?任何帮助将不胜感激。
解决方案
您似乎已经发现并纠正了错误。如果你想system
在节点上设置属性,n
那么你想做
SET n.system = Data.system
如果你想n
用包含的地图更新节点,Data.system
那么你想做
SET n += Data.system
推荐阅读
- linux - Traefik 和 Deluge 返回 No such Resource
- aurelia - 使用 aurelia-slickgrid 从上下文菜单回调访问视图模型
- python-3.x - 在python中对分区列表进行就地词法排序
- python - PyAudio callback function called only once
- php - 在 EasyAdmin V3 上上传图片
- macos - torsocks 和 Apple 的系统完整性保护
- python - 在 matplolib 中插入一个矩阵
- c# - 列表在继承中为空(C#,Unity)
- git - 错误:错误:RPC 失败;curl 56 GnuTLS 接收错误 (-54)
- javascript - WP5 Module Federation:单例实例化多次