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