使用Python和Neo4j驱动程序来实现小规模数据的CSV导入

embedded/2025/1/15 19:12:42/

要将CSV数据导入到Neo4j数据库中,你可以使用Neo4j提供的工具,比如neo4j-admin import命令(适用于大规模数据导入),或者使用Python的Neo4j驱动程序通过Cypher查询逐行插入数据(适用于小规模数据导入)。

下面我将介绍如何使用Python和Neo4j驱动程序来实现小规模数据的CSV导入。

步骤1:安装Neo4j驱动程序

首先,你需要安装Neo4j的Python驱动程序。你可以使用pip来安装:

pip install neo4j

步骤2:准备CSV文件

假设你有一个名为data.csv的CSV文件,内容如下:

id,name,age,friend_id
1,Alice,30,2
2,Bob,25,1
3,Charlie,35,4
4,David,28,3

步骤3:编写Python脚本

以下是一个Python脚本示例,它将读取CSV文件并将数据导入到Neo4j数据库中:

python">import csv
from neo4j import GraphDatabase# Neo4j连接配置
uri = "bolt://localhost:7687"  # Neo4j数据库地址
user = "neo4j"                 # Neo4j用户名
password = "your_password"     # Neo4j密码# 创建Neo4j驱动程序实例
driver = GraphDatabase.driver(uri, auth=(user, password))# 读取CSV文件并创建节点和关系
def import_csv(file_path):with open(file_path, mode='r', newline='', encoding='utf-8') as csvfile:csvreader = csv.DictReader(csvfile)with driver.session() as session:for row in csvreader:person_id = row['id']person_name = row['name']person_age = row['age']friend_id = row['friend_id']# 创建Person节点create_person_query = ("MERGE (p:Person {id: $person_id}) ""SET p.name = $person_name, p.age = $person_age")session.run(create_person_query, person_id=person_id, person_name=person_name, person_age=person_age)# 创建Friend关系if friend_id:create_friend_query = ("MATCH (p:Person {id: $person_id}), (f:Person {id: $friend_id}) ""MERGE (p)-[:FRIEND]->(f)")session.run(create_friend_query, person_id=person_id, friend_id=friend_id)# 调用函数导入CSV数据
import_csv('data.csv')# 关闭驱动程序
driver.close()

解释

  1. 连接到Neo4j数据库:使用GraphDatabase.driver创建Neo4j驱动程序实例,并提供数据库地址和认证信息。
  2. 读取CSV文件:使用Python内置的csv模块读取CSV文件。
  3. 创建节点和关系
    • 使用MERGE命令确保节点唯一性。如果节点不存在,则创建它;如果存在,则更新其属性。
    • 使用MATCHMERGE命令创建关系。如果关系不存在,则创建它。
  4. 关闭驱动程序:完成数据导入后,关闭驱动程序以释放资源。

注意事项

  • 确保Neo4j数据库正在运行,并且可以通过提供的URI访问。
  • 根据你的CSV文件内容和需求调整Cypher查询。
  • 对于大规模数据导入,建议使用neo4j-admin import工具,因为它比逐行插入更高效。

这样,你就可以使用Python脚本将CSV数据导入到Neo4j数据库中了。


http://www.ppmy.cn/embedded/154168.html

相关文章

Bevy 移动端开发指南

Bevy 移动端开发指南 Bevy 确实支持 iOS 和 Android 平台开发,但需要特定的配置和工具链。本指南将详细介绍如何在移动平台上开发 Bevy 游戏。 支持状态 ✅ iOS: 完全支持✅ Android: 完全支持⚠️ 注意:需要额外配置和工具链 环境准备 Android 开发…

OpenGL学习笔记(四):Shader 着色器(GLSL、Shader类封装)

文章目录 GLSL数据类型输入与输出Uniform的使用Shader类封装练习0练习1练习2练习3 前面的文章提到,着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分运行。从本质上来说,着色器只是一种把输入转化为输出的程序。着色器也是…

2025封禁指定国家ip-安装xtables-addons记录

如何安装和使用 安装lux仓库(该仓库包含xtables-addons所需的依赖环境) # wget http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm # rpm -ivh lux-release-7-1.noarch.rpm 安装xtables-addons。注意:必须先安装kmod-xtables-addons,再…

win下虚拟机安装选项补充

一、将WSL移动出C盘 二:WSL额外设置 三、WslRegisterDistribution 错误 0x80071772 的解决方案 当遇到 WslRegisterDistribution 错误码 0x80071772 时,这通常意味着 WSL 尝试安装到非默认磁盘分区上。此错误主要发生在尝试将 WSL 安装至除 C 盘外的位置…

【搭建JavaEE】(1)maven仓库安装配置

Maven项目 maven–管理类的 Apache Maven 是一种软件项目管理和理解工具。基于项目对象模型的概念 (POM) 的 Mvc 文件,Maven 可以从一个中心信息中管理项目的构建、报告和文档。 maven VS npm 依赖(dependencies) 项目中需要的对象&#x…

力扣 子集

回溯基础,一题多解,不同的回朔过程。 题目 求子集中,数组的每种元素有选与不选两种状态。因此在使用dfs与回溯时把每一个元素分别进行选与不选的情况考虑即可。可以先用dfs跳过当前元素即不选然后一直深层挖下去,直到挖到最深了即…

调用Kimi的API接口使用,对话,json化,产品化

背景 Kimi出来一年多了,其输出内容的质量和效果在早期的模型里面来说还是不错的,虽然现在有一些更好的效果的模型和它不分上下,但是kimi的搜索能力,长文本的总结能力,还有其产品化的丰富程度,我觉得是别的…

Springboot和Es整合

说明&#xff1a;本文章主要是简单整合和简单增删改查。 1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…