2017-04-05 126 views
1

我正在加載一個基本的CSV文件到Neo4j數據庫,它有兩列 - 「名稱」和「屬性」。名稱列始終有一個值,「屬性」列可以有值或空白。我想將價值觀與「property1」關係聯繫起來。Neo4j CSV文件加載空單元格

我使用這個代碼:

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))" 

任何幫助,將不勝感激。

回答

3

有兩個問題與您的查詢:

  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) 
) 
+0

謝謝,是的,這一直按預期工作! –

2

另一種方法是使用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) 

這將創建鏈接與B節點只有當屬性字段不爲空。