Neo4j errorMessages': {'无效输入 \'a\': 预期 \'u/U\'}

Neo4j errorMessages': {'Invalid input \'a\': expected \'u/U\'}

我有以下密码

CALL apoc.periodic.iterate(
        "LOAD CSV WITH HEADERS FROM $url AS row 
         WITH row {{.*}}
         RETURN row",
        "CALL apoc.merge.node(['House'], 
                              {{id : row.ID}}, 
                              apoc.map.submap(row,['household']),
                              apoc.map.submap(row,['household']))
        YIELD node AS n1
        CALL apoc.create.addLabels(n1, ['House'])
        YIELD node as n2
        CREATE CONSTRAINT constraint_name IF NOT EXISTS ON (n:House) ASSERT n.household IS UNIQUE
        YIELD node as n3
        RETURN COUNT(n1)
        ",
        {{batchSize: {batch_size}, iterateList: true, parallel:false, params: {{url: '{url}'}} }})

我收到错误消息':{'无效输入 'a':预期 'u/U' 创建约束 constraint_name IF NOT EXISTS ON (n:House) ASSERT n.household IS独特} 你知道如何解决这个问题吗?

您对 CREATE CONSTRAINT 的使用无效 - 它不应成为 LOAD CSV 等 Cypher 查询的一部分。

首先创建约束:

CREATE CONSTRAINT constraint_name IF NOT EXISTS ON (n:House) ASSERT n.household IS UNIQUE

然后你可以运行一个新的Cypher语句来加载数据。

无关说明:您不需要使用 apoc.periodic.iterate 来批处理 LOAD CSV,您也可以使用定期提交 https://neo4j.com/docs/cypher-manual/current/clauses/load-csv/#load-csv-setting-the-rate-of-periodic-commits