neo4j desktop导入csv数据

参考:
https://neo4j.com/developer/desktop-csv-import/

1. 将csv文件放到指定位置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.打开终端

在这里插入图片描述
如果是windows下的话,最好采取以下命令

bin\\cypher-shell
# 使用双斜杠,不然会报错找不到路径

neo4j
# 然后输入对应的用户名和密码即可

在这里插入图片描述
执行的其实就是这个dbms目录下的这个脚本
在这里插入图片描述

另外可以看到,命令行的前缀是:neo4j@mysql,用户名是neo4j,默认的图数据库是mysql。所以如果想换一个数据库导入的话,可以另外创建一个
在这里插入图片描述

这个命令行其实和browser那个可视化界面差不多,只不过没有文字,但是命令都是一模一样的.所以完全没必要用这个,直接用browser好了。

3. 检查数据

一般导入数据之前,要先看一下数据大概多少行,确认一下有没有表头

//count data rows in products.csv (no headers)
LOAD CSV FROM 'file:///vetex_family.csv' AS row
RETURN count(row);

在这里插入图片描述
得到:

  • vetex_role: 105行
  • vertex_family: 7行
  • edge_role_famlily:105行
  • edge_role_role:188行
LOAD CSV FROM 'file:///vetex_family.csv' AS row
RETURN row
LIMIT 3;

另外,也可以浏览一下数据
在这里插入图片描述

4. 构建数据模型

可以大致看一下这部分的描述:Graph data model

  • 一个是csv的格式,节点(实体)是一个csv文件;关系是一个csv文件。
  • 另外,如果节点类型中包含类似ID这种东西,那么可以考虑加入一个唯一性限制(来约束实体完整性)
  • 注意:约束可以在没有数据的时候就加入。。

4.1 建立约束

关于约束的文档,参考:1. Syntax for creating constraints

# 确定好节点类别的名称(建议首字母大写)
CREATE CONSTRAINT UniqueRole ON (p:Role) ASSERT p.id IS UNIQUE;
CREATE CONSTRAINT UniqueFamily ON (o:Family) ASSERT o.id IS UNIQUE;

可以使用show index或者show UNIQUE constraint来查看建立好的约束
在这里插入图片描述
在这里插入图片描述
看起来都差不多

如果不小心写错约束的名称,需要删了重新建立。。。

DROP CONSTRAINT UniqueProduct IF EXISTS
DROP CONSTRAINT UniqueOrder IF EXISTS

在这里插入图片描述

4.2 建立数据模型

关于这里的merge和set语法,可以参考:3.1. Merge with ON CREATE

LOAD CSV FROM 'file:///vetex_role.csv' AS row
WITH row[0] AS roleId, row[1] AS roleName, row[2] AS roleAlias
MERGE (p:Role {roleId: roleId})
  SET p.roleName = roleName, p.roleAlias = roleAlias
RETURN count(p);

在这里插入图片描述
可以看到,导入成功,而且直接就可以搜索到。
类似的,

LOAD CSV FROM 'file:///vetex_family.csv' AS row
WITH row[1] AS familyId, row[0] AS familyName
MERGE (p:Family {familyId: familyId})
  SET p.familyName = familyName
RETURN count(p);

在这里插入图片描述


导入关系csv

:auto USING PERIODIC COMMIT 500
# 如果数据量很大,使用上面语句每次提交500条数据
LOAD CSV WITH HEADERS FROM 'file:///edge_role_famlily.csv' AS row
# 如果有表头 就使用 WITH HEADERS

LOAD CSV FROM 'file:///edge_role_famlily.csv' AS row
WITH row[0] AS roleId, row[1] AS familyId
MATCH (p:Role {roleId: roleId})
MATCH (o:Family {familyId: familyId})
MERGE (p)-[rel:BelongToFamily]->(o)
RETURN count(rel);

也可以查看一下这个关系:

MATCH (r:Role)-[rel:BelongToFamily]->(f:Family)
RETURN r, rel, f LIMIT 50;

在这里插入图片描述
就很完美。

类似的,如果关系也有属性,可以使用以下方式导入

LOAD CSV FROM 'file:///edge_role_role.csv' AS row
WITH row[0] AS roleId, row[1] AS roleId2,row[2] as type
MATCH (p:Role {roleId: roleId})
MATCH (o:Role {roleId: roleId2})
MERGE (p)-[rel:KindShip {type:type}]->(o)
RETURN count(rel);

插入后再查看关系

MATCH (r:Role)-[rel:KindShip]->(r2:Role)
RETURN r, rel, r2 LIMIT 50;

在这里插入图片描述
注意,这里允许type属性为空。

  • 4
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值