首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cypher查询循环

Cypher查询循环
EN

Stack Overflow用户
提问于 2018-03-15 03:03:48
回答 1查看 151关注 0票数 0

我是graph databases,尤其是cypher的新手。我正在从我的csv导入数据。下面是我为一些country data提取的示例,并添加了citiesstates。现在我正在为areas推送数据

代码语言:javascript
运行
复制
LOAD CSV WITH HEADERS FROM
"file:///X:/loc.csv" as csvRow
MATCH (ct:city {poc:csvRow.poc})
MERGE (loc:area {eoc: csvRow.eoc, name:csvRow.loc_nme, name_wr:replace(csvRow.loc_nme," ","")})
MERGE (loc)-[:exists_inside]->(ct)

我已经使用相同的查询推送了城市和国家数据,并在它们之间建立了一个关系。

但是,当我试图在areas中创建city时,它只会继续前进,它是不会停止的。(15分钟已经过去)。

在我从互联网上得到的数据中,有7000座城市,以及这些城市内的90000个区域。

只是需要时间还是我搞砸了查询。

更新后的

代码语言:javascript
运行
复制
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
"file:///X:/loc.csv" as csvRow
MATCH (ct:city {poc:csvRow.poc})
MERGE (loc:area {eoc: csvRow.eoc, name:csvRow.loc_nme, name_wr:replace(csvRow.loc_nme," ","")})
MERGE (loc)-[:exists_inside]->(ct)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 04:29:13

好的,您的查询计划显示NodeByLabelScans和过滤器正在用于查找节点,这意味着每次您匹配或合并到一个节点时,它都必须扫描所有具有给定标签的节点,并对所有节点执行属性访问,以找到您要查找的节点。

您需要对相关的标签/属性组合进行添加索引 (或唯一约束,取决于字段是否应该是唯一的),以便快速查找。

因此,您需要一个on :city(poc),可能还需要on :area(eoc),假设这些属性是指唯一的属性。

编辑

我最初忽略的另一件大事是,您需要在加载CSV之前添加USING PERIODIC COMMIT,这样加载就会对db的写入进行批处理,这应该可以在这里完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49290900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档