Graph 在cypher查询中将数据加载到neo4j in case语句时出错

Graph 在cypher查询中将数据加载到neo4j in case语句时出错,graph,neo4j,cypher,Graph,Neo4j,Cypher,尝试使用查询中的case语句上载CSV数据,但出现以下错误: cypher: USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM 'file:///test.csv' as line MATCH(a:test_t{tid:line.pid}) CASE WHEN line.key !='NA' THEN WITH split(line.key,",") as name UNWIND name as x MERGE(k:te

尝试使用查询中的case语句上载
CSV
数据,但出现以下错误:

cypher:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' as line
MATCH(a:test_t{tid:line.pid})
CASE
  WHEN line.key !='NA' THEN
    WITH split(line.key,",") as name
    UNWIND name as x
    MERGE(k:test_key{key_term:toLower(x)})
    MERGE(a)-[:contains]->(k)
END
错误

Neo.ClientError.Statement.SyntaxError:无效输入'S':应为'l/l'(第5行第3列(偏移量:137)) “案例”


有人能帮我吗?

您不正确地使用了
案例。CASE语句中不能包含update子句。相反,您可以使用
WHERE
子句来过滤文件的行。例如,添加
WHERE line.key!='NA'
在您移动到更新之前处理文件时将起作用。像这样的东西应该合适

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' as line
MATCH (a:test_t {tid: line.pid})
WITH line
WHERE line.key <> 'NA' 
WITH split(line.key, ",") as name
UNWIND name as x
MERGE (k:test_key {key_term: toLower(x)})
MERGE (a)-[:contains]->(k)

您不正确地使用了
案例。CASE语句中不能包含update子句。相反,您可以使用
WHERE
子句来过滤文件的行。例如,添加
WHERE line.key!='NA'
在您移动到更新之前处理文件时将起作用。像这样的东西应该合适

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' as line
MATCH (a:test_t {tid: line.pid})
WITH line
WHERE line.key <> 'NA' 
WITH split(line.key, ",") as name
UNWIND name as x
MERGE (k:test_key {key_term: toLower(x)})
MERGE (a)-[:contains]->(k)

CASE
子句不支持嵌入其他Cypher子句(但它可以调用函数)。事实上,用例实际上并不需要
CASE
子句

此查询应该可以工作(neo4j 4.0+中需要开头的
:auto


CASE
子句不支持嵌入其他Cypher子句(但它可以调用函数)。事实上,用例实际上并不需要
CASE
子句

此查询应该可以工作(neo4j 4.0+中需要开头的
:auto

:auto USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///test.csv' as line FIELDTERMINATOR ';'
WITH line
WHERE line.key <> 'NA'
MATCH (a:test_t {tid: line.pid})
UNWIND split(line.key, ',') as x
MERGE (k:test_key {key_term: TOLOWER(x)})
MERGE (a)-[:contains]->(k)
pid;key
123;NA
234;Foo,Bar
345;Bar,Baz
456;NA
567;Baz