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

server/2025/1/15 21:45:18/

要将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/server/158655.html

相关文章

2025年第三届“华数杯”国际赛A题解题思路与代码(Python版)

游泳竞技策略优化模型代码详解 第一题:速度优化模型 在这一部分,我们将详细解析如何通过数学建模来优化游泳运动员在不同距离比赛中的速度分配策略。 1. 模型概述 我们的模型主要包含三个核心文件: speed_optimization.py: 速度优化的核…

37_Lua运算符

运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua支持多种运算符,包括: 算术运算符关系运算符逻辑运算符赋值运算符其他运算符1.算术运算符 下表列出了Lua语言中的常用的算术运算符,设定A的值为10,B的值为20。 运算符 运算 示例 结果 + 加法,将两个…

【Docker】Docker部署多种容器

关于docker,Windows上使用Powershell/CMD执行指令,Linux系统直接使用终端执行指令。 docker安装MySQL 拉取MySQL 也可以跳过拉取步骤,直接run,这样本地容器不存在的话,会自动拉取最新/指定的版本。 # 默认拉取最新…

软件设计模式的原则

【单一原则】(Single Responsibility Principle):一个类或者一个方法只负责一项职责。 【里氏替换原则】(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功…

按键精灵ios越狱脚本教程:多选框联动的ui界面

以下是一个简单的 iOS 代码示例,使用 Swift 语言来创建一个包含多选框(复选框)的 UI 界面,并实现联动效果。 import UIKitclass ViewController: UIViewController {let checkbox1 UIButton(type:.system)let checkbox2 UIButt…

VMWARE linux LVM 扩容磁盘分区

VMWARE设置 关闭虚拟机,删除快照,编辑虚拟机设置-硬件-硬盘-扩展磁盘容量(填写扩容后的最终大小)。进入虚拟机查看当前分区情况 [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 1…

Windows电脑本地安装并随时随地远程使用MusicGPT生成AI音乐

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 在如今快节奏的生活里,音乐不仅能够抚慰我们的心灵,还能激发无限创意。想象一下,在忙碌的工作间隙或闲暇时光中,只需输…

【声音场景分类--论文阅读】

1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段,主要重点是建立一…