2

从 CSV 文件加载数据时,我收到Neo.ClientError.Statement.SyntaxError 。

Neo.ClientError.Statement.SyntaxError:无效输入'h':预期'i/I'(第5行,第3列(偏移量:189))“合并(Zip_Code:Zip_Code {code:row.zip_cd,type:'location' })"

这是我的查询:

 Using Periodic Commit
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
Merge (State_Code:State_Code {code: row.st_cd})
    where not row.st_cd is null

Merge (Zip_Code:Zip_Code {code: row.zip_cd,type:'location'})
    where not row.zip_cd is null
Merge (Zip_Code)-[:located_in]->(State_Code)

csv中有一些空白记录,因此我使用了not null,但这给了我错误:

谁能帮我摆脱它?

4

1 回答 1

4

您收到错误是因为您使用的是WHEREwithMERGE子句。WHERE不能与MERGE.

您可以修改查询以删除语法错误,如下所示:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.st_cd IS NULL AND NOT row.zip_cd IS NULL
MERGE (state_code:State_Code {code: row.st_cd})
MERGE (zip_code:Zip_Code {code: row.zip_cd, type:'location'})
MERGE (zip_code)-[:located_in]->(state_code)

笔记:

  1. st_cd 如果其中一个或zip_cd 为 NULL ,这将跳过记录。
  2. MERGE不建议在单个查询中使用多个查询,请考虑为此编写 3 个单独的查询。

推荐方法:

加载状态代码:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.st_cd IS NULL 
MERGE (state_code:State_Code {code: row.st_cd})

加载邮政编码:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.zip_cd IS NULL
MERGE (zip_code:Zip_Code {code: row.zip_cd, type:'location'})

创建 State-Zip 关系:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///DOL_data_whd_whisard_reduced.csv" AS row
WITH row
WHERE NOT row.st_cd IS NULL AND NOT row.zip_cd IS NULL
MATCH (state_code:State_Code {code: row.st_cd})
MATCH (zip_code:Zip_Code {code: row.zip_cd, type:'location'})
MERGE (zip_code)-[:located_in]->(state_code)
于 2019-06-14T09:45:47.723 回答