我可能在錯誤的軌道上,所以我可以使用一些有用的輸入。我通過CSV文件從其他系統接收數據,我可以使用CSV LOAD將其導入到我的數據庫中。到現在爲止還挺好。CSV加載和更新現有節點/創建新節點
當我需要重新加載CSV以跟進更新時,我發生了困難。我無法刪除以前的數據,因爲我可能已經附加了額外的用戶輸入,所以我需要一個查詢來導入CSV數據,進行匹配,當它找到節點時,它將使用SET來覆蓋現有屬性。說我不確定如何捕捉數據庫中沒有節點的情況(新記錄),我們需要創建一個節點。
LOAD CSV FROM "file:xxx.csv" AS csvLine
MATCH (c:Customer {code:"ABC"})
SET c.name = name: csvLine[0]
***OPTIONAL MATCH // Here I am unsure how to express when the node is not found***
MERGE (c:Customer { name: csvLine[0], code: csvLine[1]})
所以理想的Cypher會檢查該節點是否存在,並通過設置更新新的屬性與CSV來不來 - 如果節點無法找到 - 創建一個新的與CSV數據。
而且 - 作爲旁註:如何找到不在CSV文件中但在數據庫中的節點,以便將它們標記爲過時? (這可能無法導入,但也許有人有一個想法,如何解決這個問題,以保持數據庫清理已刪除的記錄 - 只有通過與最新的CSV導入比較才能發現 - 這對每個想法都很滿意)。
任何想法或提示如何在導入時編寫查詢以更新圖形?