图数据库neo4j进阶(一):csv文件导入节点及关系

news2025/2/22 17:48:54

CSV

  • 一、load csv
  • 二、neo4j-admin import
    • <一>、导入入口
    • <二>、文件准备
    • <三>、命令详解

一、load csv

在neo4j Browser中使用Cypher语句LOAD CSV,对于数据量比较大的情况,建议先运行create constraint语句来生成约束

create constraint for (s:Student) require s.student_id is unique;

该代码为学生的student_id生成了唯一性约束,可将该属性视为主键。添加约束后,不论是生成还是查询,效率都会显著提升
生成学生节点的代码示例如下

:auto
LOAD CSV with HEADERS from 'file:///student.csv' AS row
call {
	with row
	merge (s:Student{student_id:row.student_id,name:row.name,age:row.age})
} in transactions of 100000 rows;
  • LOAD CSV from '.csv’表示从csv文件中导入数据
  • 若csv文件包含表头则加入with headers
  • 单引号内写csv文件的路径,若csv文件已在当前数据库的Import文件夹内(可在桌面版主页点击数据库右侧三点键–Open folder --Import打开import文件夹),则直接写’file:///…csv’;若不在,则写绝对路径
  • as row表示给数据表赋别名row,这时数据表相当于一个变量,后续用row.[字段]即可取得数据表的某列
  • with row表示在此处接收变量row并将其传递至后续语句
  • merge用于生成数据点,类似于match(查询)和create(创建)的结合
  • {name:row.name}表示将row的name列赋值给节点的属性name
  • call {} in transactions of 100000 rows表示批量处理数据,每批100000行。在处理大量数据时,建议使用该语句,不然易出现内存溢出错误

下述代码生成班级数据点

:auto
LOAD CSV with HEADERS from 'file:///class_id.csv' AS row
call {
	with row
	merge (s:Student{class_id:row.class_id,math_teacher:row.math_teacher,english_teacher:row.english_teacher,chinese_teacher:row.chinese_teacher})
} in transactions of 100000 rows;

接着生成关系(边)

:auto
LOAD CSV with HEADERS from 'file:///student.csv' AS row
call {
	with row
	match (s:student {student_id:row.student_id})
	match (c:class {class_id:row.class_id})
	merge (s)-[:BELONG] -> (c)
} in transactions of 100000 rows;

二、neo4j-admin import

<一>、导入入口

  • neo4j-admin针对的是数据量比较大,千万级数据,用LOAD CSV方法会报内存溢出错误
  • 这一方法需在终端中使用(桌面版neo4j-desctop主页点击数据库右侧三点键–Terminal即可打开终端)

在这里插入图片描述
进入终端以后就可以执行导入命令了

<二>、文件准备

1、节点文件

  • 顶点数据表头:“[…]:ID”,“[…]:LABEL”,“[…]:IGNORE”,"[…]:double"等

对于顶点数据表头

  • “[…]:ID"是必需项,比如将"CLASS_ID"改为"CLASS_ID:ID”
  • 若整张表都是同一标签,则不需"[…]:LABEL"列,而是在命令行,见命令详解,–nodes=Class="…csv"表示这些节点都带Class标签
  • "[…]:IGNORE"表示导入时忽略该列
  • "[…]:double"表示导入时将该列的值转为double型,默认是string

eg:

class_id:IDmath_teacherenglish_teacherchinese_teacher
1祖冲之狄更斯李白
2张苍莎士比亚杜甫

导入到图数据库时,class_id,match_teacher,english_teacher,chinese_teacher都是节点的属性,Class为节点的标签

2、关系文件

  • 边数据表头:“[…]:START_ID”,“[…]:END_ID”,“[…]:TYPE”,“[…]:IGNORE”,"[…]:double"等

对于边数据表头

  • “[…]:START_ID”、“[…]:END_ID"为必需项,比如"student_id:start_id"和"class_id:end_id”
  • “[…]:TYPE"类似于顶点数据表头的”[…]:LABEL",如"belong:TYPE",也可在命令行中指定,如–relationships=BELONG=“…csv”
  • 其它项同理

eg:

student_id:START_IDclass_id:END_ID“belong”:typenameage
3001belong李世民18
3012belong朱元璋20

导入到图数据库时,会生成两条关系:如300 -[belong]->1,301 -[belong]->2,name、age为student的属性

注意:文件需放在当前数据库的import文件夹下

<三>、命令详解

neo4j-admin database import full 
--overwrite-destination 
--multiline-fields=true 
--skip-bad-relationships 
--nodes=Class="import\class.csv"
--relationships="import\student.csv" 
--input-encoding=UTF-8 
neo4j
  • –overwrite-destination:指定在导入数据时是否覆盖目标数据库中的现有数据,如果目标数据库中已经存在数据,导入操作会覆盖这些数据
  • multiline-fields:用于指定是否允许导入的字段包含多行数据。当设置为 true 时,该参数允许字段中的数据跨越多行,这对于处理包含换行符的文本数据非常有用
  • –skip-bad-relationships:用于指定是否跳过那些引用了不存在节点ID的关系。如果设置为 true,则在导入过程中,如果遇到引用了不存在的起始节点或结束节点的关系,这些关系将被跳过,而不会中断整个导入过程。这个参数的默认值是 false
  • –nodes:导入节点
  • –relationships:导入关系
  • neo4j:表示导入到哪个数据库,这里指的是默认的neo4j,如想更改,只需改成想导入的数据库即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2298276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度剖析责任链模式

一、责任链模式的本质&#xff1a;灵活可扩展的流水线处理 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是行为型设计模式的代表&#xff0c;其核心思想是将请求的发送者与接收者解耦&#xff0c;允许多个对象都有机会处理请求。这种模式完美解决了以下…

floodfill算法系列一>岛屿的最大面积

题解 整体思路&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 整体思路&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; class Solution {int ret,m,n,count;boolean[][] vis;public int maxAreaOfIsland(int[][] grid) {m grid.length;n grid[0].length;v…

手机用流量怎样设置代理ip?

互联网各领域资料分享专区(不定期更新)&#xff1a; Sheet

游戏引擎学习第100天

仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天&#xff0c;我们开始了反射和环境贴图的工作&#xff0c;成功地根据法线显示了反射效果。然而&#xff0c;我们还没有实现反射向量的计算&#xff0c;导致反射交点的代…

AT32系列微控制器低压电机控制开发板

参考&#xff1a;《UM0014_AT32_LV_Motor_Control_EVB_V20_User_Manual_V1.0.1_ZH.pdf》 开发板介绍 此电机开发板是一个泛用型的低压三相电机驱动器&#xff0c;应用雅特力科技AT32系列微控制器搭配雅特力电机函数库&#xff0c;可驱动直流无刷电机、交流同步电机&#xff0…

如何保持 mysql 和 redis 中数据的一致性?PegaDB 给出答案

MySQL 与 Redis 数据保持一致性是一个常见且复杂的问题&#xff0c;一般来说需要结合多种策略来平衡性能与一致性。 传统的解决策略是先读缓存&#xff0c;未命中则读数据库并回填缓存&#xff0c;但方式这种维护成本较高。 随着云数据库技术的发展&#xff0c;目前国内云厂商…

Vue3(3)

一.具体业务功能实现 &#xff08;1&#xff09;登录注册页面 [element-plus 表单 & 表单校验] 功能需求说明&#xff1a; 1.注册登录 静态结构 & 基本切换 2.注册功能 (校验 注册) 3.登录功能 (校验 登录 存token) import request from /utils/request// 注册接…

2025 西湖论剑wp

web Rank-l 打开题目环境&#xff1a; 发现一个输入框&#xff0c;看一下他是用上面语言写的 发现是python&#xff0c;很容易想到ssti 密码随便输&#xff0c;发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload&#xff0c; {{(lipsum|attr(‘global…

Git命令摘录

使用 Git 升级软件通常是指通过 Git 仓库获取软件的最新版本或更新代码。以下是详细的步骤和方法&#xff1a; 1. 克隆软件仓库 如果这是你第一次获取软件代码&#xff0c;可以使用 git clone 命令将远程仓库克隆到本地。 git clone <仓库地址> 例如&#xff1a; git cl…

2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)

2024年博客之星年度评选—创作影响力评审主题文章创作评审目前排名 2024年博客之星主题文章创作评审文章得分公布&#xff01;2024年博客之星创作影响力评审2024年博客之星主题文章创作评审目前排名公布&#xff01; 【2024博客之星】恭喜完成✅主题创作的226位博主&#xff0…

unity 0基础自学2.1:unity 中button的各类状态

文章目录 1、Button的状态2、脚本中获取button的状态2.1 分析状态获取2.2 通过实现接口获取button的状态2.2.1 鼠标点击与释放2.2.2 高亮模式2.2.3 退出选中模式&#xff08;高亮状态&#xff09;2.2.4 选择模式selected2.2.5 退出选择模式 3、射线与UI交互设置3.1 Canvas中组件…

《C++ Primer》学习笔记(一)

第一部分&#xff1a;C基础 在C和C编程语言中&#xff0c;main函数必须返回int类型的值。这一要求自C标准的第一次规范&#xff08;C89&#xff0c;也叫ANSI C&#xff09;开始就已经明确规定了。std::endl和\n都用于插入换行符。std::endl除了换行&#xff0c;还会强制刷新输…

DedeBIZ系统审计小结

之前简单审计过DedeBIZ系统&#xff0c;网上还没有对这个系统的漏洞有过详尽的分析&#xff0c;于是重新审计并总结文章&#xff0c;记录下自己审计的过程。 https://github.com/DedeBIZ/DedeV6/archive/refs/tags/6.2.10.zip &#x1f4cc;DedeBIZ 系统并非基于 MVC 框架&…

C#快速排序QuickSort将递归算法修改为堆栈Stack非递归方式

我们知道,方法的调用是采用Stack的方式[后进先出:LIFO], 在DeepSeek中快速搜索C#快速排序, 搜索结果如图: 我们会发现是采用递归的方式 . 递归的优点: 简单粗暴,类似于直接写数学公式,因代码量较少,易于理解.递归与循环迭代的运行次数都是一致的 递归的缺点: 占用大量的内…

【DeepSeek × Postman】请求回复

新建一个集合 在 Postman 中创建一个测试集合 DeepSeek API Test&#xff0c;并创建一个关联的测试环境 DeepSeek API Env&#xff0c;同时定义两个变量 base_url 和 api_key 的步骤如下&#xff1a; 1. 创建测试集合 DeepSeek API Test 打开 Postman。点击左侧导航栏中的 Co…

[免费]Springboot+Vue医疗(医院)挂号管理系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringbootVue医疗(医院)挂号管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue医疗(医院)挂号管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 在如今社会上&#xff0c;关于信息上…

计算机毕业设计PySpark+hive招聘推荐系统 职位用户画像推荐系统 招聘数据分析 招聘爬虫 数据仓库 Django Vue.js Hadoop

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Jmeter+Influxdb+Grafana平台监控性能测试过程

一、Jmeter自带插件监控 下载地址&#xff1a;https://jmeter-plugins.org/install/Install/ 安装&#xff1a;下载后文件为jmeter-plugins-manager-1.3.jar&#xff0c;将其放入jmeter安装目录下的lib/ext目录&#xff0c;然后重启jmeter&#xff0c;即可。 启动Jmeter&…

ROACH

End-to-End Urban Driving by Imitating a Reinforcement Learning Coach CARLA-Roach ICCV‘21论文&#xff1a;模仿一个强化学习教练的端到端城市驾驶 文章目录 Roach输入BEV语义分割图像测量向量 Roach输出训练策略网络价值网络 具体实现由 Roach 监督的模仿学习&#xff08…

机械臂运动学笔记(一):正向运动学

正向运动学指的是通过相邻关节间的转动和移动坐标&#xff0c;将末端的坐标计算出来。 反向运动学指的是已知机械臂末端的坐标&#xff0c;反算每个关节可能的转动和移动参数。 参考资料&#xff1a;4.机械臂几何法与DH表示法_哔哩哔哩_bilibili 一.任意连杆连接的变量定义&a…