0
如何設置屬性名稱和它的值加載高瘦的CSV文件? csv文件將只包含3列,節點名稱(id),屬性名稱(p)和屬性值(v)。具有屬性的節點因此將對應於2行。如何在csv加載時設置屬性名稱和值?
LOAD CSV... row
MERGE (n) WHERE n.Name = row.id
SET n.{row.p} = row.v
此語法不退出它只是爲了解釋我想要做什麼。有沒有辦法在cypher中做這樣的事情?這是非常有用的,而不是必須先轉換數據。
一個文件包含定義爲個人節點:
Name,Age
A,25
B,34
第二個文件包含特定節點的屬性,每行一個屬性
Name,property_name,property_value
A,weight,64
A,height,180
B,hair color,blond
我想更新節點A和B根據第二個文件設置其他屬性。
正如下面提到的,一種可能性是創建(:數據),包含每一個屬性節點,並將其鏈接的個人節點
CREATE (p) -[:hasProperty]-> (:Data {Name: row.property_name, Value: row.property_value})
然而,這可能不是非常有效和提取個人節點和屬性得到更復雜。
MATCH (p:Person) --> (d:Data)
RETURN {name: p.name, age: p.age, property_names: collect(d.Name), property_values: collect(d.Value)}
Graal可以是在加載時動態設置屬性名稱,也可以是在節點上返回數據屬性的透視函數。
我目前無法嘗試。看起來很有趣。那麼你將如何訪問節點中的屬性?當我嘗試n = row時,我最終以n.property_name和n.proverty_value作爲節點屬性,分別包含實際的屬性名稱和值。用n + =行我會得到一個兩個數組的property_name和_value? – Pierre
那麼,如果你的列標題是名稱,那麼你將有一個屬性n.Name,同樣適用於所有的柱子。 + =基本上更新了屬性映射,其中as =將刪除不在行中的其他節點屬性 –
高級瘦子csv有3列,id,p和v。P可以是與名稱id節點相關的年齡,大小和高度。我的猜測是,n + =行將重寫p和v。我的工作是創建屬性節點並將它們鏈接到節點,但因此問題在查詢級別相同(請參閱我的其他帖子),如果您想要報告一個節點及其屬性節點中保存的屬性。我實際上缺少了透視函數。 – Pierre