我有一個節點表和邊緣表,它們都可以作爲CSV文件使用。 我設法通過加載節點表:如何使用Neo4j包含具有NULL值的屬性MERGE
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///NodesETL.csv' AS line
CREATE (:InfoNodes {id: toString(line.id), description: toString(line.description)})
此查詢創建與CSV文件的字段值的InfoNodes作爲屬性:InfoNodes這是好的。
信息節點與其他信息節點具有關係,例如,這些關係存在於具有相同標籤的節點之間。 這些關係存儲在可作爲附加CSV文件提供的邊緣表中。 該Edge表的每一行都包含idfrom和idto字段,它們根據id屬性定義InfoNode之間的關係。 邊緣表格還包含3個表示關係屬性的附加字段。第一個屬性始終是一個字符串,並且從不爲NULL,例如從來沒有空的字符串。第二個屬性和第三個屬性都是類型字符串,可以具有「」的NULL值。所以secondproperty和/或thirdproperty可以包含NULL值。 我嘗試使用這個邊緣的創建表的[:{關係:, firstproperty :, secondproperty thirdproperty:}]之間的關係:借:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'file:///EdgesETL.csv' AS line
MATCH (from:InfoNodes{id: toString(line.idfrom)})
MATCH (to:InfoNodes{id: toString(line.idto)})
MERGE (from)-[:RELATION {firstproperty: toString(line.firstproperty), secondproperty: toString(line.secondproperty), thirdproperty: toString(line.thirdproperty)}]->(to)
這第二個暗號腳本結果爲錯誤時secondproperty(InfoNodes) Edge表中的第三個屬性包含NULL值。 Neo4j錯誤消息是:無法合併使用第二屬性的空屬性值的關係。 當我從第二腳本secondproperty場和secondproperty刪除:屬性比同類型的錯誤發生時提thirdproperty:使用空屬性值thirdproperty 當我刪除secondproperty不能合併的關係,並從以前的腳本thirdproperty字段和屬性,則[:關係]創建信息節點之間的關係,包括以第一屬性存儲的第一個屬性表字段:[:RELATION]關係的屬性。
問題:如何擴展第二個腳本,以便從Edge表中將第二個屬性和第三個屬性字段加載到第二個屬性:以及包含NULL值的[:RELATION]關係的第三個屬性:?
Can't MERGE with null values; 'Cannot merge node using null property value' in neo4j描述了同樣的問題,但沒有回答我在多個字段/與NULL值的屬性的情況下的問題。
是否有相同的節點之間的多重關係,但與一些屬性的值不同?或者(idfrom,idto)對是否都是唯一的? –
:InfoNodes可以與其他InfoNode有一個或多個關係,但在多重關係的情況下,每個關係都有自己的標籤。因此,InfoNods之間的多個關係在Edge表中具有其自己的唯一IDfrom/idto,並將它們自己的關係屬性作爲字段。 – Luc