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