Neo4j cypher - 导入 CSV 并根据 csv 值添加节点之间的关系

2024-03-13

是否可以在 cypher 中使用导入功能根据 csv 的值在节点之间创建不同的关系。

例如: 对于给定的 csv 数据

product_id  user_id  action
1           1        VIEW
1           2        PURCHASE

我需要创建产品节点(product_id)、用户节点(user_id)以及“查看”或“购买”关系user' and product基于 ' 的值的节点action' csv 中的字段。

以下是我尝试过的方法。我知道语法不正确,但只是为了说明我想要做什么。

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file://pathto/product-event.csv" AS csvLine 
FIELDTERMINATOR ','
MERGE ( prod:Product{pid: toInt(csvLine.product_id)} )
MERGE ( usr:User { cid: toInt(csvLine.userid)  })
WITH prod,usr , CASE  
    WHEN csvLine.action ='VIEW' THEN  'VIEW'
    WHEN csvLine.action ='PURCHASE' THEN  'PURCHASE'
    ELSE 'VIEW' END AS action
MERGE (usr)-[:action]->(prod)



USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///pathto/product-event.csv" AS csvLine 
FIELDTERMINATOR ','
MERGE ( prod:Product {pid: toInt(csvLine.productid) } )
MERGE ( usr:User { cid: toInt(csvLine.userid) }
    )
ON CREATE SET 
    prod.created=timestamp()
WHERE csvLine.action = 'VIEW'
MERGE (cust)-[:VIEW]->(prod)
WHERE csvLine.action = 'PURCHASE'
MERGE (usr)-[:PURCHASE]->(prod)

也许有简单的方法可以做到这一点。但我在网上没有得到任何参考。谢谢。


您不能拥有动态关系类型。然而,有一个解决方法,即有条件地用 1 或 0 个元素填充数组并应用FOREACH:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file://pathto/product-event.csv" AS csvLine 
FIELDTERMINATOR ','
MERGE ( prod:Product{pid: toInt(csvLine.product_id)} )
MERGE ( usr:User { cid: toInt(csvLine.userid)  })
FOREACH(ignoreMe IN CASE WHEN csvLine.action='VIEW' THEN [1] ELSE [] END | 
    MERGE (usr)-[:VIEW]->(prod) )
FOREACH(ignoreMe IN CASE WHEN csvLine.action='PURCHASE' THEN [1] ELSE [] END | 
    MERGE (usr)-[:PURCHASE]->(prod) )

也可以看看http://www.markhneedham.com/blog/2014/08/22/neo4j-load-csv-handling-empty-columns http://www.markhneedham.com/blog/2014/08/22/neo4j-load-csv-handling-empty-columns.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Neo4j cypher - 导入 CSV 并根据 csv 值添加节点之间的关系 的相关文章

随机推荐

  • android 延迟加载未在手机上显示图像或显示速度很慢

    我正在使用 JSON 来解析在线 xml 文档以及两种延迟图像加载的方法 以下是我的源代码 解释和我的问题 解释 方法一 使用AsyncTask和线imageLoader DisplayImage String jsonImageText
  • 安装chatterBot时出错

    每当我尝试使用命令安装 ChatterBot 时pip install ChatterBot它给出了这个错误 Retrying Retry total 0 connect None read None redirect None after
  • 扩展点或从 Liquid 模板访问 OpenApiDocument

    We have 规范扩展 https github com OAI OpenAPI Specification blob master versions 3 0 2 md specification extensions i e x isP
  • Git 子模块工作流程建议

    所以几天前我开始使用 Git 聚会已经很晚了 别骂 真正开始熟悉基本命令 想法和工作流程 然而 子模块确实让我大吃一惊 我正在尝试贡献代码FuelPHP http fuelphp com s GitHub https github com
  • Symfony2 中数据库测试的实践?如何隔离?

    目前测试与 Symfony2 数据库交互的最佳实践是什么 我有一个简单的 CRUD 设置 我想确保我的测试没问题 现在 我有 4 个测试 每一个测试都确保创建 更新 删除和列出操作正常发生 我的测试用例有两个神奇的方法 construct
  • 错误代码:1093。您无法在 FROM 子句中指定更新的目标表

    假设我有一个产品表 并且只有 2 个字段 id 和购买日期 我想删除 2019 年购买的最后一件产品 我尝试使用以下查询来做到这一点 DELETE FROM products WHERE id SELECT id FROM products
  • 加快 WMA(加权移动平均线)计算速度

    我正在尝试计算 15 天柱的指数移动平均线 但希望查看每个 结束 日 柱的 15 天柱 EMA 的 演变 所以 这意味着我有 15 天的柱线 当每天出现新数据时 我想使用新信息重新计算 EMA 实际上 我有 15 天的柱形图 然后 每天之后
  • 如何将图像复制到SD卡上的现有目录?

    我正在尝试使用以下代码复制图像文件 InputStream fileInputStream null OutputStream fileOutputStream null String inPath storage emulated 0 P
  • MFMessageComposeViewController 不显示相机图标

    当我手动调出 新消息 时 我会在文本编辑区域左侧看到一个相机图标 当我使用 MFMessageComposeViewController 时 它不会显示此图标 这意味着您无法插入图像 我知道这是可以做到的 因为那些创造了txtAgif ht
  • 动态尿路感染稳定吗?

    我的文件格式没有声明的 UTI 因此 Launch Services 已为其分配了动态 UTI dyn ah62d4rv4ge81g23wsmw1a5dbte 我无法控制这些文档的 UTI 我也想为该格式开发一个快速查看生成器 并且快速查看
  • SAML 2.0:如何配置断言消费者服务 URL

    我正在实现一个 SAML 2 0 服务提供商 它使用 Okta 作为身份提供商 我想配置断言消费者服务 ACS URL 以便我的服务提供商应用程序中的 SAML 2 0 反映回断言中 但是 我注意到 Okta 身份提供程序改为发送在 Okt
  • Tensorflow unsorted_segment_sum 维度

    我正在使用tf unsorted segment sumTensorFlow 的方法 当我作为数据给出的张量只有一行时 它工作得很好 例如 tf unsorted segment sum tf constant 0 2 0 1 0 5 0
  • Bootstrap 3 导航栏折叠

    有什么方法可以增加 Bootstrap 3 导航栏折叠的点 即 使其在纵向平板电脑上折叠成下拉菜单 这两个适用于 bootstrap 2 但现在不行了 如何使用 Twitter bootstrap responsive 更改导航栏折叠阈值
  • Maven:带有 Groovy 2.3.5 的 Groovy-Eclipse 编译器插件

    Since GMaven http gmaven codehaus org 已经停产了 我一直在用Groovy Eclipse 编译器插件 http groovy codehaus org Groovy Eclipse compiler p
  • 程序员对Vista Windows任务管理器中内存的理解

    我对 XP 中的 Windows 任务管理器有一定的了解 但我想在 Vista 中更好地了解它 工作集 内存 和 内存 私有工作集 有什么区别 什么是Paged Pool 什么是NP Pool Non Paged 如何使用这些来确定内存使用
  • 比质心更好的“中心点”

    我正在使用多边形的质心在地图应用程序中附加标记 这对于凸多边形来说绝对有效 对于许多凹多边形来说也非常好 但是 某些多边形 香蕉 甜甜圈 显然不会产生所需的结果 在这些情况下 质心位于outside多边形区域 有谁知道更好的方法来找到合适的
  • List 的 Last() 扩展方法的性能如何?

    我很喜欢Last 并会一直使用它List
  • Rstudio 速度慢得令人痛苦

    突然间 Rstudio 慢得令人痛苦 现在无法使用 这意味着 我打开它 如果我输入任何内容 就会有几秒钟的延迟 我已经探索了我能想到的所有选项 1 重新安装 R 和 Rstudio 尽管我不能 100 确定我可以删除所有组件 2 尝试重置设
  • if 语句不起作用?

    我用调试器看了又看 似乎无法弄清楚为什么 IF 语句总是打印消息 IF 语句检查是否 yesno Y or N 但无论我输入 y 或 Y 或 n N 或 H B 它都会显示 我不知道该采取什么行动了 我似乎找不到哪里出了问题 if yesn
  • Neo4j cypher - 导入 CSV 并根据 csv 值添加节点之间的关系

    是否可以在 cypher 中使用导入功能根据 csv 的值在节点之间创建不同的关系 例如 对于给定的 csv 数据 product id user id action 1 1 VIEW 1 2 PURCHASE 我需要创建产品节点 prod