簡體   English   中英

Neo4j CSV文件加載帶有空單元格

[英]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))"

任何幫助,將不勝感激。

您的查詢有兩個問題:

  1. 缺少第5行上的結束括號
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM