Neo4j数据库的应用

1安装与启动

官网下载zip包,然后在bin目录下,启动控制台

  1. Install Neo4j
    在这里插入图片描述oh,no, 删了重新下吧
    在这里插入图片描述

  2. Open Neo4j Browser
    Start Up the Neo4j Browser Visit: http://localhost:7474/
    在这里插入图片描述Default login is username ‘neo4j’ and password ‘neo4j’ (full installation instructions below)
    然后可以重设用户名密码
    在这里插入图片描述

  3. Explore Sample Datasets
    在这里插入图片描述点击第二页的Create就可以看到如下效果
    在这里插入图片描述

2 如何在neo4j中创建新的数据库

找到neo4J中的conf文件夹,用管理员模式打开conf文件夹
Neo4j数据库的应用_第1张图片打开neo4j.conf文件
Neo4j数据库的应用_第2张图片修改原来的数据库改为要创建的数据库名
把graph.db换为自己的数据库名称,记得去掉dbms.active_database前面的#
Neo4j数据库的应用_第3张图片
关闭neo4j服务(这里,我直接关闭了控制台)
重新打开neo4j服务
Neo4j数据库的应用_第4张图片
然后就看见了新的数据库
Neo4j数据库的应用_第5张图片

3如何导入数据

Neo4j可以读取和导入CSV文件的一些方式

	 LOAD CSV Cypher命令:此命令是一个很好的起点,可以处理中小型数据集(最多1000万条记录)。
    neo4j-admin 批量导入工具:命令行工具,用于直接加载大型数据集。
    水壶导入工具:映射并执行数据处理流程的步骤,并且对于非常大的数据集非常适用,尤其是在开发人员已经熟悉使用此工具的情况下。

3.1使用LOAD CSV来导入数据

CSV格式的数据是文本数据,数据之间用英文逗号隔开。
支持的数据类型:仅CSV
好处:操作简单。
坏处:运行时间长
关键步骤就是:先生成CSV文件,然后用Cypher语句“LOAD CSV”将数据导入到Neo4j数据库中。
这种方式是最简单的导入数据到neo4j的方式,也是广泛使用来导入原始数据。

3.1.2csv结点文件的载入

将需要导入的csv文件放入import文件夹下
在这里插入图片描述数据格式
Neo4j数据库的应用_第6张图片

运行如下命令导入节点

LOAD CSV WITH HEADERS  FROM "file:///nodes_1.csv" AS line  
MERGE (p:province{id:line.id})  

WITH HEADERS表明csv文件的第一行是属性名。花括号{}代表节点的属性
在 Cypher 语言中,节点一般使用小括号表示:()
小括号中填写变量名,如(a),获取到 a 后可以对 a 进行后续操作。
我们也可以对节点补充更多细节,一般可以限定其类型和属性值。

限定节点标签:使用冒号 : ,如 (a:Author),(a:Author:Person)。
限定节点属性:使用花括号 {} 补充键值对。如(a:Author {age:21,sex:'男'})。

执行语句,会出现下面的提示信息,表明载入成功:在这里插入图片描述

3.1.2csv关系文件的载入

同理将需要导入的csv文件放入import文件夹下
数据格式
Neo4j数据库的应用_第7张图片

运行如下命令导入关系

LOAD CSV WITH HEADERS FROM "file:///links.csv" AS line  
match (from:province{id:line.head}),(to:province{id:line.tail})  
merge (from)-[r:rel{property1:line.head,property2:line.tail}]->(to)  

方括号[]里面是关系,rel就是类型。这里面有箭头 -->的方向的,表示是从from到to的关系
在关系中,同样的使用花括号{}来增加关系的属性
在 Cypher 语言中,关系一般使用中括号表示:[]

关系的括号内如节点一样,可以添加变量名、类型、属性键值对。

已知,关系需要由两个节点组成(包括自环),用中括号连接两个节点表示关系。

如果不需要强调关系的方向,节点与关系之间使用一根短横线连接:()-[rel:FRIENDS]-()
如果需要强调关系的方向,则在终止节点前使用尖括号表示箭头:()-[relation:KNOWS]->()

关系括号内也可以留空。

执行语句,会出现下面的提示信息,表明载入成功:
在这里插入图片描述
为了验证关系是否正确,输入下面的查询语句:

start n = node(*)  
return n  

Neo4j数据库的应用_第8张图片

python导入

使用python操作neo4j首先我们要先安装一个库 :pip install py2neo
安装py2neo后我们可以使用其中的函数对neo4j进行操作。

from py2neo import Graph, Node, Relationship
import pandas as pd
# 参考文章:https://blog.csdn.net/qq_36499794/article/details/89597550
df = pd.read_csv('links.csv', error_bad_lines=False, encoding='utf-8')

# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474", auth=("neo4j", "root"))
graph.delete_all()
graph.begin()

# 创建结点
for i in range(len(df['head'])):
    node1 = Node('Province', name=df['head'][i])#该结点语义类型是Province,结点名字是df['head'][i]  也是它的属性,注意节点需要大写
    node1['id'] = df['head'][i]#给节点添加属性
    graph.merge(node1, 'Province', 'name')
    node2 = Node('Province', name=df['tail'][i])
    node1['id'] = df['tail'][i]#给节点添加属性
    graph.merge(node2, 'Province', 'name')
    rel = Relationship(node1, df['relation'][i], node2)
    graph.merge(rel)
print("success")


问题:无法生成对应的关系类型(需要根据一个变量的值/内容来确定关系的类型,例如从一个CSV文件中导入数据时。Cypher语法本身不支持动态关系类型,这时可以使用万能的APOC过程,在参数中拼出需要执行的语句)

Neo4j数据库的应用_第9张图片

删除

删除节点

Neo4j数据库的应用_第10张图片

删除关系类型

MATCH ()-[r:relation]->()  delete r

Neo4j数据库的应用_第11张图片

注意:neo4j默认的数据库是data/databases下面的graph.db,浏览器也会默认的访问这个graph数据库,所以当你新建了一个数据库的时候,浏览器也不会访问它,解决的办法有如下两种。
方法1:修改配置文件
将conf文件夹下的neo4j.conf中dbms.active_database = graph.db 修改为
dbms.active_database =自己的数据库名称.db,并将前面的#号删除。
方法2:建立软连接
由于neo4j默认访问的是graph.db数据库,如果我们将新创建的数据库与这个默认数据库之间创建一个软连接,即默认数据库中的内容都是新创建的数据库,那么就是间接的访问了新创建的数据库,而不用每次都修改配置文件的内容。

查询

Neo4j数据库的应用_第12张图片Neo4j数据库的应用_第13张图片

Neo4j数据库的应用_第14张图片

清空

因为删除结点之后,存在属性,不知道怎么删除
所以决定
删除数据库
重新打开neo4j控制台

参考

Neo4j导入数据的5种方式详解配图:https://blog.csdn.net/qianmojl/article/details/116207175
csv文件导入Neo4j(包括结点和关系的导入):https://www.pianshen.com/article/8341894032/
Neo4j常用操作命令https://blog.csdn.net/weixin_42727550/article/details/122882276
Neo4J 基本教程 —— 一切基于关系,而不受关系限制https://www.jianshu.com/p/e448c5f6c6d7

你可能感兴趣的:(学习笔记,数据仓库)