neo4j_笔记,新建图数据库,csv导入文件,查询等

目前我的数据来源于一个项目,这个项目需要需要把neo4j的数据用于信息系统中,后续会写d3绘制力导向图,自己绘制neo4j这种图数据。也算是一步步踩坑,这篇博客是neo4j的部分,包含创建neo4j数据库,csv导入数据,查询等,还有一些小知识,会持续更新。

清空数据库

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

新建数据库

neo4j默认数据库是graph.db

想要新建数据库要修改neo4j的配置文件 neo4j安装目录下的con文件中的config文件

我的neo4j config文件路径如下 D:\softwares\neo4j-community-3.5.26\conf\neo4j.conf

全局搜索 dbms.active_database= 找到默认数据库名称

直接在 # dbms.active_database=graph.db下添加自己的数据库

 

保存重启neo4j 可以看到已经是一个全新的数据库了,之前的内容消失了

倘若要返回以前的数据库,在conf文件里注释掉新建数据库,取消注释graph.db就能回到之前的数据库了。一般graph.db是默认数据库,当全部注释的时候,会默认进入graph.db数据库

从csv导入数据

分两种,从本地和远程

从远程比较简单

load csv from 'XXXX地址' as XXX create/merge XXXXX

LOAD CSV FROM 'url地址' as line merge (a:customer{personId:line[0],name:line[1],type:line[2]})

create表示新建,不会有去重效果,merge表示没有就新建,有就去重,就不用新建

要注意不管是远程还是本地,load csv from 'XXXX地址' 是得到一整个东西,想要插入数据,要一条一条把数据读完,所以需要create或者merge来创建合并,并且要把里面的字段作为属性遍历完,很多教程直接load csv from XX,亲测会报错,一定记得加merge或create。

本地读入csv

类似的,但是导入本地文件,文件名前面要加前缀 file:///

并且neo4j有一个默认安全设置,只能从特定文件夹导入数据,在neo4j安装目录的 import目录下

放一个实体的文件夹在import目录下,里面有多个实体csv,导入数据方式如下

//添加疾病实体disease
LOAD CSV with headers FROM 'file:///entities/Disease.csv' as row merge (d:disease{name:row.entity_name})

剩下的写一起

// 添加部位实体
LOAD CSV with headers FROM 'file:///entities/Position.csv' as row merge (d:position{name:row.entity_name})

//添加症状实体
LOAD CSV with headers FROM 'file:///entities/Symptom.csv' as row merge (d:symptom{name:row.entity_name})

//添加检查实体
LOAD CSV with headers FROM 'file:///entities/Test.csv' as row merge (d:test{name:row.entity_name})

//添加治疗实体
LOAD CSV with headers FROM 'file:///entities/Treatment.csv' as row merge (d:treatment{name:row.entity_name})

注意:倘如csv文件有列名,就必须要用with headers,以及后面访问字段要用row.列名,或者row['列名'],不能用row[0],row[1]这种方式访问

创建关系 DAP

// DAP 疾病施加于部位 
LOAD CSV WITH HEADERS FROM "file:///relations/DAP.csv" AS line match (from:disease{name:line.entity_head}),(to:position{name:line.entity_tail}) merge (from)-[d:DAP]->(to)

 剩下的写一起,但是运行时注意要逐条运行,不然会报错

//SAP 症状施加于部位
LOAD CSV WITH HEADERS FROM "file:///relations/SAP.csv" AS line
match (from:symptom{name:line.entity_head}),(to:position{name:line.entity_tail})
merge (from)-[d:SAP]->(to)

//SNAP 部位不存在症状
LOAD CSV WITH HEADERS FROM "file:///relations/SNAP.csv" AS line
match (from:symptom{name:line.entity_head}),(to:position{name:line.entity_tail})
merge (from)-[d:SNAP]->(to)

//TeAP 检查施加于部位
LOAD CSV WITH HEADERS FROM "file:///relations/TeAP.csv" AS line
match (from:test{name:line.entity_head}),(to:disease{name:line.entity_tail})
merge (from)-[d:TeAP]->(to)

//TeAS 因为症状采取检查
LOAD CSV WITH HEADERS FROM "file:///relations/TeAS.csv" AS line
match (from:test{name:line.entity_head}),(to:symptom{name:line.entity_tail})
merge (from)-[d:TeAS]->(to)

//TeCP 检查结果包含部位
LOAD CSV WITH HEADERS FROM "file:///relations/TeCP.csv" AS line
match (from:test{name:line.entity_head}),(to:position{name:line.entity_tail})
merge (from)-[d:TeCP]->(to)

//TeRD 检查确证了疾病
LOAD CSV WITH HEADERS FROM "file:///relations/TeRD.csv" AS line
match (from:test{name:line.entity_head}),(to:disease{name:line.entity_tail})
merge (from)-[d:TeRD]->(to)

//TeRS 检查结果发现症状
LOAD CSV WITH HEADERS FROM "file:///relations/TeRS.csv" AS line
match (from:test{name:line.entity_head}),(to:symptom{name:line.entity_tail})
merge (from)-[d:TeRS]->(to)

//TrAD 治疗施加于疾病
LOAD CSV WITH HEADERS FROM "file:///relations/TrAD.csv" AS line
match (from:treatment{name:line.entity_head}),(to:disease{name:line.entity_tail})
merge (from)-[d:TrAD]->(to)

//TrAP 治疗施加于部位
LOAD CSV WITH HEADERS FROM "file:///relations/TrAP.csv" AS line
match (from:treatment{name:line.entity_head}),(to:position{name:line.entity_tail})
merge (from)-[d:TrAP]->(to)

//TrRD 治疗确诊了疾病 
LOAD CSV WITH HEADERS FROM "file:///relations/TrRD.csv" AS line
match (from:treatment{name:line.entity_head}),(to:disease{name:line.entity_tail})
merge (from)-[d:TrRD]->(to)

 查询

//找到胃癌有关的部位 
match (p:position)-[relatedTo]-(:disease{name:"胃癌"}) return p.name

 

//查询和胃癌相关的所有结点和关系 
match(n)--(:disease{name:"胃癌"}) return n

修改标签名

由于后期需要需要在java中设置test实体,产生了命名冲突,修改test实体的标签为test_

MATCH (n:test) REMOVE n:test SET n:test_

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值