问题描述
我有以下密码
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']),['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}'}} }})
我收到 errorMessages': {'Invalid input 'a': expected 'u/U' CREATE CONSTRAINT constraint_name IF NOT EXISTS ON (n:House) ASSERT n.household IS UNIQUE} 你知道如何解决这个问题吗?
解决方法
您对 CREATE CONSTRAINT
的使用无效 - 它不应该是 Cypher 查询(如 LOAD CSV)的一部分。
先创建约束:
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