cypher 批量创建关系
发布于 7 年前 作者 neo4j 11098 次浏览 来自 问答

我的csv文件内容如下 实体,属性,属性值 LGG5,机身尺寸,149.4×73.9×8.2mm LGG5,屏幕分辨率,2K LGG5,屏幕尺寸,5.2英寸 LGG5,处理器,骁龙820 LGG5,像素,2000万 LGG5,像素,800万 我有三列数据,第一列和第三列是实体节点,想把第二列的作为关系 该怎么使用cypher语句 我见到的都是自己定义关系 试了好久都没有弄出来,我做的是手机图谱 望前辈不吝赐教,感激不尽!

7 回复

load csv with headers from “file:/C:/Users/shaoyuanxin/Desktop/论文自己/实体-属性关系抽取/将数据写入表格//KnowledgeGraph.csv” AS row With row merge(en:Entity{name:row.实体}) merge(pv:Value{name:row.属性值}) merge(en)-[:row.属性]-(pv) match (en)-[r]-(pv) return en,r,pv; 这是自己写的查询语句,有错,不能实现

首先如果数据量大,就不要用cypher 语句导入了, neo4j 有个导入工具,在文件夹path/to/neo4j/bin/neo4j-import 下 用法如下

bin/neo4j-import --into retail.db --id-type string
–nodes:Customer customers.csv --nodes products.csv
–nodes orders_header.csv,orders1.csv,orders2.csv
–relationships:CONTAINS order_details.csv
–relationships:ORDERED customer_orders_header.csv,orders1.csv,orders2.csv

参考文档 https://neo4j.com/developer/guide-import-csv/

如果 要用 cypher 创建,那么 load csv的时候 关系是这么创建,你添加创建关系的代码,例子:

LOAD CSV FROM ‘file:///home/nate/Downloads/file.csv’ AS line MERGE (n:A {number : line[0]}) WITH line, n MERGE (m:B {ID : line[1]}) WITH m,n MERGE (n)-[:LIKES]->(m);

由于csv本身是列表性质,你需要 创建 “关系列”,然后在load csv的时候 用MERGE 匹配关系列,再自己写 生成 关系指向的逻辑

你好,安装文档的要求,我是要创建三个CSV文件吗,其中两个作为节点,另外一个作为关系?还有这个导入工具怎么用的,在DOS里吗?

对的,参照文档使用命令导入

对于cypher 创建 “关系列”,理解的不是很透彻, LOAD CSV FROM ‘file:///home/nate/Downloads/file.csv’ AS line MERGE (n:A {number : line[0]}) WITH line, n MERGE (m:B {ID : line[1]}) WITH m,n MERGE (n)-[:LIKES]->(m); 1、file.csv是只存两列数据(不存关系)还是存放所有的数据(3列) 2、m,n是两列节点 3、关系像这样表示出来的只能是LIKES,不能是关系列的数据 自己新手,麻烦了

不要用关系数据库的思想 来做neo4j ,你左侧都是 LGG5 ,你只创建一个LGG5节点,然后把属性值 通过关系 指向 这个LGG5就行

回到顶部