Neo4j数据库中导入CSV示例数据

这篇具有很好参考价值的文章主要介绍了Neo4j数据库中导入CSV示例数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文简要介绍Neo4j数据库以及如何从CSV文件中导入示例数据,方便我们快速学习测试图数据库。首先介绍简单数据模型以及基本图查询概念,然后通过LOAD CSV命令导入数据,生成节点和关系。

环境准备

读者可以快速安装Neo4j Desktop,启动并创建`City Calls’项目 ,启动数据库并打开Neo4j Brower。

领域模型

领域模型非常简单,可以用三句话表达:

  • 有一些城市

  • 有一些人住在城市

  • 人彼此通话

准备数据

图数据库与其他持久化数据库一样,可以存储数据。下面准备CSV文件数据,包括一些示例数据:

from_dt	to_dt	from_city	from_gender	from_name	from_number	to_city	to_gender	to_name	to_number
2019-01-01T00:37	2019-01-01T00:44	Pattaya	Woman	Aleena	114-397-2007	Pattaya	Woman	Antonella	325-453-5419
2019-01-01T00:54	2019-01-01T01:05	Pattaya	Man	Jaziel	956-780-1788	Kanchanaburi	Man	Gabriel	469-505-9894
2019-01-01T01:01	2019-01-01T01:07	Hua Hin	Woman	Nayeli	320-480-8313	Kanchanaburi	Woman	Freya	587-595-9477
2019-01-01T01:27	2019-01-01T01:41	Bangkok	Man	Javier	655-683-6284	Chiang Mai	Man	Dalton	340-374-5681
2019-01-01T01:48	2019-01-01T01:54	Pattaya	Woman	Everleigh	610-164-4540	Bangkok	Woman	Oakley	574-752-8471
2019-01-01T02:18	2019-01-01T02:28	Chiang Mai	Man	Emmet	215-530-3993	Kanchanaburi	Man	Kareem	974-369-1496
2019-01-01T02:32	2019-01-01T02:41	Pattaya	Man	Henry	620-121-3009	Bangkok	Man	Micah	381-284-2790
2019-01-01T02:40	2019-01-01T02:54	Kanchanaburi	Woman	Lina	448-273-3382	Chiang Mai	Man	Beckham	370-171-4490
2019-01-01T03:40	2019-01-01T03:51	Pattaya	Woman	Alani	183-225-1764	Chiang Mai	Woman	Zaniyah	443-995-7423
2019-01-01T06:04	2019-01-01T06:06	Chiang Mai	Woman	Cassidy	959-149-3497	Bangkok	Man	Enrique	923-682-3283
2019-01-01T06:11	2019-01-01T06:18	Hua Hin	Man	Tadeo	572-552-2898	Chiang Mai	Woman	Gia	531-143-1961
2019-01-01T06:17	2019-01-01T06:21	Hua Hin	Man	Jayceon	108-826-6422	Pattaya	Woman	Jaelyn	283-837-9288
2019-01-01T06:42	2019-01-01T06:47	Hua Hin	Woman	Emerald	315-757-4272	Chiang Mai	Woman	Alivia	295-527-4914
2019-01-01T07:05	2019-01-01T07:09	Kanchanaburi	Man	Alistair	341-910-6735	Hua Hin	Man	Kaleb	366-100-9549
2019-01-01T07:34	2019-01-01T07:42	Bangkok	Man	Clark	655-643-2815	Chiang Mai	Man	Major	805-931-1585
2019-01-01T08:49	2019-01-01T08:56	Pattaya	Man	Dominick	291-616-9899	Pattaya	Woman	Kenna	871-427-1228
2019-01-01T09:18	2019-01-01T09:23	Bangkok	Woman	Aileen	413-665-7064	Pattaya	Woman	Brooklyn	508-151-5830
2019-01-01T09:39	2019-01-01T09:49	Hua Hin	Man	Manuel	523-347-6054	Bangkok	Man	Tobias	252-753-3307
2019-01-01T09:57	2019-01-01T10:06	Hua Hin	Woman	Avalyn	656-507-8932	Hua Hin	Man	Harlan	865-375-6184

我们看到CSV文件每行代表一次通话信息:开始时间、结束时间、人名称、性别、电话号码和城市。为了导入CSV文件至图数据库,首先应该设计图数据结构。

数据模型

CSV一行信息表示谁给谁打了电话,转换该信息至图表示,需要使用两个主要概念:节点和关系。

节点

一个节点代表张三,一个节点代表李四,两者都包括属性:姓名、性别、电话号码和城市。两个节点属于相同类型,都表示一个人,我们称节点类型为节点标签(Node Label)。我们想从行中提取的另一个节点是Call的节点,Duration属性表示呼叫开始和结束之间的分钟差。

关系

目前我们有了几个节点,但这仍然不是一个图。我们的节点之间没有关系,我们需要修复它。从张三给李四打过电话的事实来看,我们可以说张三是打出去的,我们称这种关系为外向[OUT];在另一边,李四接到了一个电话,所以对他来说,这个电话是来电[IN]。

规范化

现在在Person节点中有city属性。这种结构会导致数据重复和潜在的不一致问题。更好的设计是将每个城市作为一个独立的节点,与居住在那里的每个人建立关系。

导入数据

CSV文件可以为远程或本地。本地位置为:\ne4j-desk\data\relate-data\dbmss\dbms-***\import, CSV文件包括头则使用 WITH HEADERS,其他配置参考官方文档:LOAD CSV - Cypher Manual (neo4j.com)

导入脚本如下,下面进行解释说明:

LOAD CSV WITH HEADERS FROM 'file:///city_calls.csv' AS line 
MERGE (c1:City { name: line.from_city })
MERGE (p1:Person{ name: line.from_name,number: line.from_number, gender: line.from_gender })
MERGE (p1)-[:FROM]->(c1)
MERGE (C2:City { name: line.to_city })
MERGE (p2:Person { name: line.to_name,number: line.to_number, gender: line.to_gender })
MERGE (p2)-[:FROM]->(c2)
CREATE (c:Call { from: datetime(line.from_dt), to: datetime(line.to_dt), duration: duration.between(datetime(line.from_dt),datetime(line.to_dt)).minutes })
CREATE (p1)-[:OUT]->(c)<-[:IN]-(p2);

从每一行CSV文件中,我们将得到1个Call节点,潜在的2个Persons节点和可能抽取2个Cities节点。为什么“可能”?因为我们不应该复制同一实体的City和Person节点,而应该只创建一次,然后重用添加更多关系的节点。图中应该仅有一个曼谷城市,所以这个“单实例”要求应该对所有城市、人员和Call节点都成立。

MERGE命令帮助我们避免节点重复。如果指定的结构(节点或节点和关系的组合)在数据库中不存在,那么将创建它,否则跳过。

到目前为止,每一行代表一个事实调用,我们需要所有的事实,我们可以简单地创建调用,没有任何重复的问题。但两次运行此脚本将导致一次又一次地创建相同的Call节点,因此不要重复导入。

查询所有节点进行确认。

MATCH(c) return c;

Neo4j数据库中导入CSV示例数据,数据库,大数据处理,图数据库,数据库,neo4j

参考文档:https://vladbatushkov.medium.com/learn-neo4j-cypher-basics-in-30-minutes-94d68a52544文章来源地址https://www.toymoban.com/news/detail-612069.html

到了这里,关于Neo4j数据库中导入CSV示例数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • neo4j清空数据库

    清空所有Person、 Movie节点及其所有关系 查询任意数据  如果没有, 就说明已经删除成功了 这段代码是用Cypher查询语言编写的,用于清空所有的Person节点、Movie节点以及它们之间的所有关系。让我们逐步解释代码的每个部分: 这部分代码使用MATCH语句来查找图数据库中的所有

    2024年02月14日
    浏览(31)
  • Neo4j 图形数据库

    目录 Neo4j 基础 什么是Neo4j Neo4j 模块构建 Neo4j的主要应用场景 Neo4j 环境搭建 Docker 安装Neo4j Neo4j数据浏览器  Neo4j CQL CQL简介 Neo4j CQL高级 CQL 函数 CQL多深度关系节点 事务 索引 约束 Neo4j之Admin管理员操作 Neo4j - 数据库备份和恢复 调优思路  Neo4j 程序访问 SpringBoot 整合Neo4j

    2024年02月10日
    浏览(36)
  • 图数据库_Neo4j的使用场景_以及Windows版Neo4j Community Server安装_欺诈检测_推荐_知识图谱---Neo4j图数据库工作笔记0003

    可以看到使用场景,比如欺诈检测, 要建立图谱,才能进行,欺诈人员检测   可以看到图谱的各种应用场景 然后推荐引擎也需要,可以看到 在金融,旅行,求职招聘,保健,服务,媒体娱乐,都可以进行推荐   然后还有知识图谱 身份访问管理,这里,可以进行安全管理,可以挖掘出潜在关系

    2024年02月12日
    浏览(32)
  • 图数据库Neo4j简介

    随着社交、电商金融、零售、物联网的快速发展,现实社会支起了一张张庞大二复杂的关系网,传统数据库很难处理关系运算,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。 图数据库是基于图论实现的一种Nosql数据库,起数据结构和数据查询方式都是以

    2024年02月22日
    浏览(40)
  • Neo4j数据库使用相关

    做知识图谱相关项目,初步使用了neo4j数据库,简单记录一下使用过程和踩坑备忘~ 操作系统Win10+Neo4j社区版(community,版本4.4.30) 目录 一、安装 1.1 安装Java和Neo4j 1.2 环境变量设置 二、 Neo4j使用 2.1 安装服务 2.2 数据库使用 2.3 数据库备份  Java下载链接:Java Downloads | Oracle

    2024年04月16日
    浏览(48)
  • 图数据库Neo4j——SpringBoot使用Neo4j & 简单增删改查 & 复杂查询初步

    图形数据库是专门用于存储图形数据的数据库,它使用图形模型来存储数据,并且支持复杂的图形查询。常见的图形数据库有Neo4j、OrientDB等。 Neo4j是用Java实现的开源NoSQL图数据库,本篇博客介绍如何在SpringBoot中使用Neo4j图数据库,如何进行简单的增删改查,以及如何进行复杂

    2024年02月06日
    浏览(42)
  • 图数据库_Neo4j和SpringBoot整合使用_实战创建明星关系图谱---Neo4j图数据库工作笔记0010

    2023-09-10 10:37:48 补充 注意:下面是旧版本的语法,如果你发现@NodeEntity这样的注解没有的话可以这样: 这里就要用@Node 另外如果@StartNode和@EndNode都没有了,那么说明是用法变了. 关于最新的用法,在官网有明确的说明和案例,很有用: 下面给出官网的案例:

    2024年02月12日
    浏览(37)
  • 图数据库_Neo4j中文版_Centos7.9安装Neo4j社区版3.5.9_基于jdk1.8---Neo4j图数据库工作笔记0012

        由于我们在国内使用啊,具体还是要用中文版滴,找了好久这个neo4j,原来还是有中文版的, 中文版下载地址在这里: 所有版本都在这里了,需要哪个自己去下载就可以了,要注意下载以后,参考:  在这个位置下载,主要是找到对应中文版的安装包,花了写时间啊 然后我们看一下安装

    2024年02月12日
    浏览(35)
  • Neo4j导出和导入数据库

    Neo4j 4.x版本和5.x版本的导出导入有区别,这里分开来讲。 导入导出之前要先 关闭 neo4j服务。 进入 $NEO4J_HOME%/bin 目录执行如下数据库导出命令: 提示: 其中 neo4j.db 是你需要导出的默认数据库。可以去 conf 文件中查看,默认数据库是哪一个。

    2024年02月16日
    浏览(33)
  • Neo4j图数据库安装教程

    记录Neo4j图数据库安装过程中踩过的坑和问题解决办法,仅供参考。 Neo4j数据库底层是使用java编写,所有底层基于Java虚拟机运行,所以在安装neo4j之前要安装java环境; 下载jdk1.7版本,自行安装    **这里有坑,建议不要直接跟着做呦,不然你会后悔的** set  JAVA_HOME = D:Pro

    2024年02月11日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包