Python 将 CSV 数据导入 Neo4j 的实现方法
使用 Python 脚本将 CSV 格式的人物关系数据导入 Neo4j 图数据库的完整流程。主要步骤包括:准备 UTF-8 编码的数据集、安装并启动 Neo4j 服务、配置 Python 环境及依赖库(neo4j-python-driver, pandas, py2neo)、编写代码连接数据库、读取 CSV 数据并转换为节点与关系对象、最后执行批量写入。文中还解决了常见的 Unicode 编码错误问题。

使用 Python 脚本将 CSV 格式的人物关系数据导入 Neo4j 图数据库的完整流程。主要步骤包括:准备 UTF-8 编码的数据集、安装并启动 Neo4j 服务、配置 Python 环境及依赖库(neo4j-python-driver, pandas, py2neo)、编写代码连接数据库、读取 CSV 数据并转换为节点与关系对象、最后执行批量写入。文中还解决了常见的 Unicode 编码错误问题。

请自行准备包含人物关系信息的 CSV 文件。
使用文本编辑器打开 CSV 文件。

确保文件编码为 UTF-8,避免后续读取报错。

选择'是'完成转换。

启动 Neo4j Desktop,新建一个项目实例。

配置数据库名称及访问密码。

点击 Start 按钮启动服务。

在浏览器中访问 Neo4j 管理界面。

执行以下 Cypher 语句查看数据库是否为空:
match(n) return n;

在 IDE 中新建 Python 项目和包结构。

点击 File -> Settings。

找到 Project Interpreter,确认已安装必要库。
需确保导入了
neo4j、pandas、py2neo。

打开 Terminal 输入以下命令:
pip install neo4j-python-driver pandas py2neo

编写代码连接 Neo4j,注意将密码修改为实际设置的值。

加载 CSV 文件,路径需根据实际情况调整。

清洗数据,提取所需字段。

构建元组列表存储人物关系数据。
# 初始化一个空列表来存储所有的元组
tuple_total = []
# 迭代 DataFrame 的每一行
for index, row in invoice_data.iterrows():
ties_total = [row['人物'], row['关系'], row['关系人物']]
# 将所有元组添加到结果列表中
tuple_total.extend([ties_total])
print(tuple_total)

定义函数批量创建节点。
# 把节点导入 neo4j 中
def create_node(people):
for name in people:
node_1 = Node('人物', name=name)
graph.create(node_1)
create_node(people)

运行代码后,在 Neo4j 中查看是否生成节点。

根据元组数据建立节点间的关系。
matcher = NodeMatcher(graph)
# 导入关系
for i in range(0, len(tuple_total)):
name_1 = matcher.match('人物', name=tuple_total[i][0]).first()
name_2 = matcher.match('人物', name=tuple_total[i][2]).first()
rel = tuple_total[i][1]
relationship = Relationship(name_1, rel, name_2)
graph.create(relationship)

在 Neo4j Browser 中查看完整的图结构。

错误信息:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte

解决过程: 是因为 CSV 文件没有设置为 UTF-8 编码。具体操作请参考本文第一部分的 1.2 和 1.3 步骤,将文件另存为 UTF-8 格式即可。


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online