当前位置: 首页 > 知识库问答 >
问题:

如何使用cypher有效地从neo4j中的不同文件加载节点和边?

璩正志
2023-03-14

假设我有一个包含节点信息的csv文件,每一行都有一个唯一的id(第一列),另一个包含边的csv文件(通过节点的唯一id)描述节点之间的边。下面的密码成功地加载了节点,然后创建了边。但是,我能让它更有效率吗?我的真实数据集有数百万个节点和数千万条边。显然,我应该使用定期提交并创建索引,但我是否可以以某种方式避免对每个边缘使用matching,并使用我知道要构建的每个边缘的唯一节点ID这一事实?还是我搞错了?我想这样做完全在cypher(没有java)。

load csv from 'file:///home/user/nodes.txt' as line
create (:foo { id: toInt(line[0]), name: line[1], someprop: line[2]});

load csv from 'file:///home/user/edges.txt' as line
match (n1:foo { id: toInt(line[0])} ) 
with n1, line
match (n2:foo { id: toInt(line[1])} ) 
// if I had an index I'd use it here with: using index n2:foo(name) 
merge (n1) -[:bar]-> (n2) ;

match p = (n)-->(m) return p;

nodes.txt:

0,node0,Some Property 0
1,node1,Some Property 1
2,node2,Some Property 2
3,node3,Some Property 3
4,node4,Some Property 4
5,node5,Some Property 5
6,node6,Some Property 6
7,node7,Some Property 7
8,node8,Some Property 8
9,node9,Some Property 9
10,node10,Some Property 10
...
0,2
0,4
0,8
0,13
1,4
1,8
1,15
2,4
2,6
3,4
3,7
3,8
3,11
4,10
...

共有1个答案

沈开畅
2023-03-14

就像Ron上面评论的那样,LOAD CSV可能不适合大型数据集,而他链接到的CSV批导入工具很棒。如果您发现无法以批导入工具的方式轻松地楔入csv,那么Neo4J BatchInserter API非常简单地使用:http://docs.Neo4J.org/chunked/stable/batchinSert.html

 类似资料:
  • 我有一个csv格式的数据集。其中一个字段是“elem_type”。基于此类型,我需要创建不同的类型节点,并在使用csv load加载数据时,根据“elem_type”为csv的“列”赋予不同的名称,有什么方法可以做到这一点吗? 我的csv没有标头,数据如下所示: 基于第一个colmuns,即我的“elem_type”,我要加载数据并定义3种类型的节点(Person,Car,Boat)

  • 我有一个csv格式的数据集。其中一个字段是类型,类似于枚举。基于此类型,我需要在使用csv LOAD加载数据时创建不同的类型、节点和关系。您可以在csv中调用具有定义子类型的属性的超级类型的行。 我真的不知道如何在Cypher中做到这一点。我唯一的选择是将一个csv文件拆分为每种类型的csv文件,并运行不同的密码吗?

  • 我有一个neo4j实例,其中有多种类型的节点(标签),每种节点都有自己的一组属性。所以,说我有: 我的问题是,是否有一个单一的‘高效’密码查询可以进行盲搜索。基本上,它应该能够搜索所有标签和所有属性,并给我匹配的节点。因此,一个单一的查询来匹配'XYZ'与我的数据库中的Person,Location,Event和其他标签的所有属性。 我理解一种方法是使用一个非常长的where子句,在其中我硬编码我

  • 我有一个密码脚本文件,我想直接运行它。 就我所知,我能找到的所有答案都使用命令,在我的版本(Neo4j server 3.5.5)中,该命令似乎不推荐使用,而是用命令代替。 一个命令行shell,您可以在其中对neo4j的实例执行Cypher。缺省情况下,shell是交互式的,但是您可以通过直接在命令行上传递cypher或通过管道传输带有cypher语句的文件(在Windows上需要Powersh

  • 我正在使用cytoscape来显示我用GraphViz制作的一个图表。我从cytoscape应用商店安装了附加的点应用程序,以便能够加载我的图表。 我的图形加载完美,所有的边都连接到所需的节点。但是我的节点和边的属性没有显示出来。 下面是一个不起作用的简化示例(少了属性、节点和边): 你知道为什么我的属性不能加载吗?我试着在我的图上破坏和创建视图,但它什么也做不到。两个图的节点表都只有“共享名”和

  • 我有一个CSV文件,有3列,标记为ID,纬度,经度。我希望将CSV文件加载到Neo4j,并创建具有上述属性的节点。Location:属性应该是具有纬度和经度子属性的点数据类型。 CSV是: 如何格式化要导入为点类型的第二个属性?