[英]Neo4j CSV file load with empty cells
我正在將一個基本的CSV文件加載到Neo4j數據庫中,該數據庫具有兩列-“名稱”和“屬性”。 名稱列始終具有一個值,“屬性”列可以具有一個值或空格。 我希望將值與關系“ property1”關聯。
我正在使用此代碼:
LOAD CSV WITH HEADERS FROM 'file:///fileName.csv' AS line
MERGE (Test_Document:A {name: line.name})
WITH line, Test_Document
FOREACH (x IN CASE WHEN line.property IS NULL THEN [] ELSE [1] END |
MERGE (Properties:B {property1: line.property})
WITH Test_Document, Properties
FOREACH (y IN CASE WHEN Properties IS NULL THEN [] ELSE [1] END |
MERGE (Test_Document)-[:property1]->(Properties))
我收到一條錯誤消息:
Unexpected end of input: expected whitespace, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, CALL, RETURN or ')' (line 8, column 54 (offset: 423))
" MERGE (Test_Document)-[:property1]->(Properties))"
任何幫助,將不勝感激。
您的查詢有兩個問題:
Properties
不在第二個FOREACH
范圍內,因為它是在上一個FOREACH
聲明的(在FOREACH
中聲明的別名僅在該FOREACH
子句內范圍) 嘗試這個:
LOAD CSV WITH HEADERS FROM 'file:///fileName.csv' AS line
MERGE (Test_Document:A {name: line.name})
WITH line, Test_Document
FOREACH (x IN CASE WHEN line.property IS NULL THEN [] ELSE [1] END |
MERGE (Properties:B {property1: line.property})
MERGE (Test_Document)-[:property1]->(Properties)
)
另一種方法是僅當不存在缺少值的情況時,才使用WHERE
創建關系:
LOAD CSV WITH HEADERS FROM 'file:///fileName.csv' AS line
WITH line, line.name AS Name, line.property AS Property
MERGE (Test_Document:A {name: Name})
WITH Property
WHERE Property <> ""
MERGE (Properties:B {property1: Property})
MERGE (Test_Document)-[:property1]->(Properties)
僅當屬性字段不為null時,才創建鏈接和B節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.