簡體   English   中英

在 Neo4j 中導入具有空值的 CSV 文件

[英]Import a CSV file with null values in Neo4j

這應該是一項非常簡單的任務,但我正在努力。 對於所有圖形數據庫和 Neo4j 專家,我真的很感激一些幫助,讓我的生活更輕松一些。 我似乎無法在 CSV 文件中找出帶有 NULL 值的 MERGE 子句。

Example.csv 文件包含


Name,Lastname,Team,Room

AAAA,BBBB,CCCC,1111

DDDD,EEEE,FFFF,2222

GGGG,HHHH,,3333

IIII,JJJJ,KKKK,

LLLL,MMMM,CCCC,1111

NNNN,OOOO,,2222

執行時

LOAD CSV WITH HEADERS FROM 'file:///EXAMPLE.csv' AS row WITH row RETURN row

我可以看到諸如 Team 和 Room 之類的一些字段具有空值。 我想為員工、團隊和房間創建節點,這是我迄今為止編寫的代碼。


CREATE CONSTRAINT ON (t:Team) ASSERT t.name IS UNIQUE;

CREATE CONSTRAINT ON (r:Room) ASSERT r.name IS UNIQUE;

LOAD CSV WITH HEADERS FROM 'file:///EXAMPLE.csv' AS row WITH row WHERE row.Room <> '' AND row.Room IS NOT NULL AND row.Team <> '' AND row.Team IS NOT NULL

CREATE (m:Employee {name: toUpper(row.Lastname), firstname: toUpper(row.Name)})

MERGE (r:Room { name:row.Room})

MERGE (t.Team {name:row.Team})

CREATE (m)-[:WORKS_IN]->(r)

CREATE (m)-[:WORKS_WITH]->(t);

我猜你已經猜到了一些帶有空值的條目被取消而不是被采用。 我想將員工保留在數據庫中,即使它在部門或團隊中沒有條目,即。 如果為 null,則不存在任何關系。

我真的很感激一些幫助,並在此先感謝。

您可以嘗試使用FOREACHCASE WHEN處理條件 像這樣的東西:

CREATE (m:Employee {name: toUpper(row.Lastname), firstname: toUpper(row.Name)})
FOREACH (n IN (CASE WHEN row.Room IS NULL THEN [] ELSE [1] END) |
    MERGE (r:Room { name:row.Room})
    CREATE (m)-[:WORKS_IN]->(r)
)
FOREACH (n IN (CASE WHEN row.Team IS NULL THEN [] ELSE [1] END) |
    MERGE (t:Team {name:row.Team})
    CREATE (m)-[:WORKS_WITH]->(t)
)

FOREACH塊只會在相關行不為空時執行一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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