Neo4j的基本了解与csv文件导入
-
Neo4j概述
传统的数据库通常是以表格形式存储,neo4j是一种图数据库,图形数据库是以图形结构的形式存储数据的数据库。 它以节点,关系和属性的形式存储应用程序的数据。 正如RDBMS以表的“行,列”的形式存储数据,GDBMS以“图形”的形式存储数据。 -
图数据库优点
- 更快的数据库操作。当然,有一个前提条件,那就是数据量较大,在MySql中存储的话需要许多表,并且表之间联系较多(即有不少的操作需要join表)。
- 数据更直观,相应的SQL语句也更好写(Neo4j使用Cypher语言,与传统SQL有很大不同)。
- 更灵活。不管有什么新的数据需要存储,都是一律的节点和边,只需要考虑节点属性和边属性。而MySql中即意味着新的表,还要考虑和其他表的关系
- 数据库操作的速度并不会随着数据库的增大有明显的降低。这得益于Neo4j特殊的数据存储结构和专门优化的图算法。
- CSV文件导入Neo4j ——在此我以学校专业之间的关系为例
1. 准备3个csv文件
1.school.csv(学校信息,包括学校名字 shool_name,学校编号 sid,sid唯一相当于主键)
2.personial.csv(专业信息,包括专业名字 personial_name,专业编号 pid,pid唯一相当于该专业表的主键)
3. personial_school.csv(学校-专业信息表,包括专业名字,学校名字,pid,sid,重点是这两个id对上号)
2. 将准备好的csv文件导入neo4j中
将我们准备好的数据导入下载的neo4j-community-3.5.5中的impor中
3.打开Neo4j
打开命令控制台输入以下命令
neo4j.bat console
http://localhost:7474/进入网页版neo4j
4.导入csv文件
//导入专业
LOAD CSV WITH HEADERS FROM "file:///personal_id.csv" AS line
MERGE (p:personial{pid:toInteger(line.pid),p_name:line.Personial_name})
//导入学校
LOAD CSV WITH HEADERS FROM "file:///school_id.csv" AS line
MERGE (p:school{sid:toInteger(line.sid),s_name:line.School_name})
导入成功后可以查看到多了两个Node Lables
点击结点可查看生成的图
//导入关系
LOAD CSV WITH HEADERS FROM "file:///personial-school.csv" AS line
match (from:school{sid:toInteger(line.sid)}),(to:personial{pid:toInteger(line.pid)})
merge (from)-[r:shool_personial{sid:toInteger(line.sid),pid:toInteger(line.pid)}]->(to)
可查看到relationship types中多了一个我们所创建的关系
点击该关系查看结果图,
//更改25可显示更多结点
MATCH p=()-[r:shool_personial]->() RETURN p LIMIT 25