【问题标题】:Loading CSV Neo4j "Neo.ClientError.Statement.SemanticError: Cannot merge node using null property value for Test1'"加载 CSV Neo4j“Neo.ClientError.Statement.SemanticError:无法使用 Test1 的空属性值合并节点”
【发布时间】:2019-11-07 05:00:56
【问题描述】:

我正在使用来自以下链接的 Grades.csv 数据,

https://people.sc.fsu.edu/~jburkardt/data/csv/csv.html

我注意到 csv 文件中的所有字符串都在 "" 中,这导致

错误信息: Neo.ClientError.Statement.SemanticError: Cannot merge node using null property value for Test1

所以我删除了标题中的“”

我试图运行的代码:

LOAD CSV WITH HEADERS FROM 'file:///grades.csv' AS row MERGE (t:Test1 {Test1: row.Test1}) RETURN count(t); 错误信息:

Neo.ClientError.Statement.SyntaxError: Type mismatch: expected Any, Map, Node, Relationship, Point, Duration, Date, Time, LocalTime, LocalDateTime or DateTime but was List<String> (line 2, column 24 (offset: 65)) "MERGE (t:Test1 {Test1: row.Test1})

【问题讨论】:

  • "的错误是什么?
  • 谢谢。我更新了问题。对不起,我不熟悉使用 stackoverflow

标签: csv neo4j cypher


【解决方案1】:

基本上你不能使用空属性值合并节点。在您的情况下,对于文件中的一行或多行,Test1 必须为空。如果您没有看到 Test1 的空白值,请检查文件末尾是否有任何空白行。

您还可以在 MERGE 之前使用 WHERE 处理空检查,例如

LOAD CSV ... 
WHERE row.Test1 IS NOT NULL
MERGE (t:Test1 {Test1: row.Test1})
RETURN count(t);

【讨论】:

  • 您好,谢谢。我尝试在编辑后的 ​​csv 和未编辑的 csv 上使用 LOAD CSV WITH HEADERS FROM 'file:///grades.csv' AS row WITH row WHERE row.Test1 IS NOT NULL MERGE (t:Test1 {Test1: row.Test1}) RETURN count(t);。我不太清楚为什么 count 的返回值为 0 并且没有任何内容加载到 neo4j 数据库中。抱歉,我也意识到了我在原始问题中犯的错误并进行了更新。谢谢
【解决方案2】:

问题是:

  1. 文件在“Airpump”行中的 Test1 值后面缺少逗号。
  2. 文件在每行的值之间有空格。 (搜索正则表达式 ", +" 并替换为 ","。)

解决上述问题后,您的查询应该可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多