从数据生成到图数据库:Linux下Neo4j的CSV导入

文章目录

简介

介绍如何在Linux系统中设置和使用Neo4j数据库。

  • 首先,找到Neo4j的import文件夹,通常位于Neo4j安装目录下的data文件夹内,并展示通过neo4j.conf配置文件查找和修改import目录路径。
  • 接着,通过大模型生成两张CSV表格数据,一张是老师数据,另一张是学生数据,并保存到import文件夹中。
  • 最后,展示了如何使用Cypher语句将这两张表格导入Neo4j,创建相应的节点和关系。

找到import文件夹

在Linux系统中,Neo4j的import目录通常位于Neo4j安装目录下的data文件夹内。

linux neo4j 标准的安装步骤:ubuntu sudo apt-get install neo4j 配置安装与设置远程访问

按照上述文章,进行配置后,就可以通过终端安装 neo4j:

安装完成后,neo4j的配置文件在 /etc/neo4j下。

bash 复制代码
sudo apt-get install neo4j

Neo4j的配置文件(通常是neo4j.conf)允许你自定义import目录的路径。这个文件通常位于Neo4j安装目录下的conf文件夹中。通过修改配置文件中的dbms.directories.import属性,你可以将import目录设置为你希望的任何绝对路径。

例如,如果你想要将import目录设置为/home/neo4j/import,你可以在neo4j.conf文件中找到dbms.directories.import属性,并将其值更改为/home/neo4j/import。

进入 /etc/neo4j 目录下,可以看到 neo4j.conf 文件:

bash 复制代码
vim neo4j.conf

如上图配置文件所示,我的 neo4j 的 import 文件夹是 /var/lib/neo4j/import

bash 复制代码
cd /var/lib/neo4j/import

准备csv表格数据

自己准备数据,一时之间,还不知道去哪里找。所以我让大模型帮我生成两张数据表。

下述是大模型生成数据的提示词:

复制代码
请你给出5条老师csv数据,包括:姓名、年龄;
给出10条学生csv数据,包括:姓名、年龄、老师、关系;
在生成表格数据时,遵守下述规则:
1. 学生表的老师属性与老师表的姓名是对应的;
2. 学生和老师的姓名,都是全名。老师名字要带有80后的时代特点,学生名字要带有00后的时代特点;
3. 学生表中的关系属性,范围是从50到100;

下述的两张表,是由大模型根据上述提示词生成:

teacher.csv:

c 复制代码
姓名,年龄
张伟,38
李娜,40
王强,39
赵敏杰,42
刘丽芳,37

student.csv:

c 复制代码
姓名,年龄,老师,关系
李明轩,18,张伟,85
张梓涵,17,李娜,65
王梓轩,16,王强,90
赵欣怡,15,赵敏杰,70
刘浩宇,17,刘丽芳,55
陈梓萱,16,张伟,100
黄思远,18,李娜,75
杨梦涵,15,王强,80
周雨轩,17,赵敏杰,95
吴宇轩,16,刘丽芳,60

导入neo4j

首先将上述两张表保存到 import 文件夹下。

两张表,已放到 import 文件夹下。

启动 neo4j :

bash 复制代码
sudo neo4j start

访问 http://127.0.0.1:7474/browser/ :

Teacher

bash 复制代码
LOAD CSV WITH HEADERS FROM 'file:///teacher.csv' AS row  
CREATE (:Teacher {name: row.姓名, age: toInteger(row.年龄)})

如下图所示,老师节点已经创建完成:

Student

学生节点的创建会麻烦一点。因为要生成与老师节点之间的关系。

学生表创建的Cypher语句如下:

bash 复制代码
LOAD CSV WITH HEADERS FROM 'file:///student.csv' AS row  
MATCH (t:Teacher {name: row.老师})  
CREATE (s:Student {name: row.姓名, age: toInteger(row.年龄)})  
CREATE (s)-[r:STUDENT_OF {weight: toInteger(row.关系)}]->(t)  
RETURN s, r, t

我使用鼠标点击学生赵欣怡与老师赵敏杰之间的边(STUDENT_OF),在右侧展示出了他们之间的关系是70。

相关推荐
小此方几秒前
Re:Linux系统篇(四十九)线程篇 · 二:为什么现代操作系统选择分页式存储?分页如何解决物理内存碎片?分页结构如何演化到页表、页目录、MMU?
linux·运维·驱动开发
Huangjin007_1 小时前
【Linux 系统篇(十一)】基础开发工具(六) —— 版本控制器 Git
linux·运维·git
j7~1 小时前
【Linux】二十六.线程篇三《Linux多线程编程:线程控制、线程ID以及进程地址空间分布、线程局部存储__thread以及clone系统调用》---详解
linux·运维·服务器·开发语言·c++·多线程编辑·线程的控制
wWYy.2 小时前
Mysql:一行数据是怎么存储的?
android·数据库·mysql
一米阳光86619 小时前
软考(中级)软件设计师核心笔记(3)数据库系统——概念、数据库设计
数据库·笔记·职场发展·软考·软件设计师
奈斯先生Vector9 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
乌萨奇也要立志学C++9 小时前
【Linux】网络基础 从零理解网络通信:局域网、跨网传输与 Socket 预备知识
linux·服务器·网络
RisunJan11 小时前
Linux命令-slabtop(实时显示内核 slab 缓存信息)
linux
建筑工程企业管理系统11 小时前
erp工程项目管理系统落地价值:实现工程多项目成本精细化核算与管控
大数据·数据库·人工智能
AI大模型-小华11 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro