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

ops/2025/1/15 7:46:35/

要将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/ops/150235.html

相关文章

Multicoin Capital续篇:加密世界永恒不变的叙事

与其追逐前沿叙事,不如把握确定性机会。 原文:Multicoin Capital;译者:Azuma;编辑:郝方舟 出品 | Odaily星球日报(ID:o-daily) 两天前,Multicoin Capital 曾发…

面试题:Java中并发并行串行的区别

在 Java 中,并发、并行和串行是三个常见的概念,它们描述了程序中任务执行的不同方式。虽然它们之间存在某些相似之处,但它们的实现和用途有显著的区别。 1. 串行 (Serial) 串行是指任务按照顺序一个接一个地执行,前一个任务完成…

LeetCode 2657. Find the Prefix Common Array of Two Arrays

🔗 https://leetcode.com/problems/find-the-prefix-common-array-of-two-arrays 题目 给两个数组 A 和 B,是 n 的全排列返回数组 C,表示在 index 及之前,A 和 B 有多少个相同的数 思路 hashset ,遍历 index&#…

【极速版 -- 大模型入门到进阶】除了 Prompting, 大模型还能如何被应用?

文章目录 大模型应用 -- Generative AI Projects🌊 大模型应用的时效优势🌊 大模型应用的方式 - Technology Options应用方式一 🐟 Prompting:最简单快速应用方式二🐟 Retrieval augmented generation (RAG)&#xff1…

RabbitMQ确保消息可靠性

消息丢失的可能性 支付服务先扣减余额和更新支付状态(这俩是同步调用),然后通过RabbitMq异步调用支付服务更新订单状态。但是有些情况下,可能订单已经支付 ,但是更新订单状态却失败了,这就出现了消息丢失。…

2024 年 6 月青少年软编等考 C 语言一级真题解析

目录 T1. 奇迹思路分析 T2. 九牛一毛思路分析 T3. A 除以 B思路分析 T4. 进化论思路分析 T5. 药房管理 T1. 奇迹 经典电影《阿甘正传》有句台词,说:“Miracles happen every day.”(奇迹每天都发生)。本题就请你直接在屏幕上输出…

基于Python Whoosh和BM25算法实现的问答系统

基于Whoosh和BM25算法实现的问答系统 一、实验目的 本次实验目的是对问答系统的设计与实现过程有一个全面的了解。实验主要内容包括:对给定的文本集合进行处理、建立索引;找出问题的候选答案句并排序;答案抽取,逐步调优。 二、…

outlook Synchronization problem conflict 同步问题

Outlook 和 Outlook Web App 中出现同步问题 Applies to: 适用于: Outlook 2019, Outlook 2016, Office 2016, Outlook 2013, Microsoft Office Outlook 2007, Microsoft Office Outlook 2003 Outlook 2019、Outlook 2016、Office 2016、Outlook 2013、Microsoft …