gpt4 book ai didi

csv - 使用具有某些列名作为属性的 Cypher 加载 CSV

转载 作者:行者123 更新时间:2023-12-04 11:00:38 24 4
gpt4 key购买 nike

我有一个像这样的 CSV,第一行是标题(H1、H2、H3,...) -

H1,H2,H3,H4,H5,...
a1,a2,a3,a4,a5,...
b1,b2,b3,b4,b5,...

我已经有一个 Neo4j 数据库,在其中我使用第一列 (H1) 来合并节点并使用 H2 和 H3 的行创建一个新节点。当我去掉标题行时,我的代码如下所示 -
LOAD CSV FROM 'file:///mycsv.csv' AS row
MERGE (a:existingNode {name:row[0]})
CREATE (b:NewNode {name1:row[2], name2: row[1], name3: row[0]})
MERGE (a)-[:isAssociated]->(b)

如何导入 CSV 以便将其余的标题 H4、H5、... 设置为创建的节点的属性(基于 H2 和 H3),而不必在创建的节点下分配每个标题?我想要标题名称作为属性。谢谢。

最佳答案

假设您知道 CSV header 的前 3 个元素的名称,此查询:

  • 将标题行放回文件中并使用 LOAD CSV WITH HEADER ,
  • 使用 apoc.map.removeKeys函数创建一个没有每个 row 的前 3 个元素的 map , 和
  • 使用 SET b += ...将该映射的元素添加到 b 的操作(不涉及其他具有不同名称的现有属性)
  • LOAD CSV WITH HEADERS FROM 'file:///mycsv.csv' AS row
    MERGE (a:existingNode {name: row.H1})
    CREATE (b:NewNode {name1: row.H3, name2: row.H2, name3: row.H1})
    SET b += apoc.map.removeKeys(row, ['H1', 'H2', 'H3'])
    MERGE (a)-[:isAssociated]->(b)

    关于csv - 使用具有某些列名作为属性的 Cypher 加载 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58822787/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com