[英]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,則不存在任何關系。
我真的很感激一些幫助,並在此先感謝。
您可以嘗試使用FOREACH和CASE 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.