Neo4j批量导入数据

导入大量数据时使用CSV 文件比较方便。下面分导入节点和导入关系两部分说明。

1 节点信息导入

首先导入岗位信息,这里我们用id来标识,其中id对于每一个岗位来说是唯一的。

id信息我们已经事先处理好保存在了csv文件中,格式如下,其中第一行是列名。

csv 复制代码
id
0
1
2
3
4
5

我们首先要把这个csv 文件复制到 Neo4j 的 import 文件夹下。(具体:在我的机器中为'D:\App\neo4j\Data\relate-data\dbmss\dbms-278f05b5-0b41-40cf-883f-a5617288cb48\import',里面的dbms-278f05b5-0b41-40cf-883f-a5617288cb48对应着希望导入节点的项目。

导入的Cypher语句为:

Cypher 复制代码
LOAD CSV WITH HEADERS FROM 'file:///node_id.csv' AS line FIELDTERMINATOR ','
CREATE (:Job { name: line.id})

看一下添加后的结果。 按照同样的方法添加公司、平均工资、岗位名和教育背景。

Cypher 复制代码
LOAD CSV WITH HEADERS FROM 'file:///node_salary.csv' AS line FIELDTERMINATOR ','
CREATE (:Salary { name: line.salary})

LOAD CSV WITH HEADERS FROM 'file:///node_title.csv' AS line FIELDTERMINATOR ','
CREATE (:Title { name: line.title})

LOAD CSV WITH HEADERS FROM 'file:///node_company.csv' AS line FIELDTERMINATOR ','
CREATE (:Company { name: line.company})

LOAD CSV WITH HEADERS FROM 'file:///node_education.csv' AS line FIELDTERMINATOR ','
CREATE (:Education { name: line.education})

characters、duties和skills 数据是使用 entity extraction 技术对岗位描述进行提取得到的,我们首先把每一个处理后的数据保存到 json 文件中。

json 复制代码
{
    "skill": [
        "前端",
        "CSS3",
        "Sass",
        "Less",
        "Vue",
        "JavaScript",
        "HTML5;"
    ],
    "character": [
        "None;"
    ],
    "duty": [
        "前端模块化,组件化开发",
        "Vue",
        "element",
        "UI",
        "Sass",
        "Less",
        "CSS3",
        "HTML5",
        "uni-app",
        "flex/grid布局",
        "项目经验者优先;"
    ]
}

然后遍历文件夹下所有 json 文件,保持数据唯一之后存至 csv 文件中。

Cypher 复制代码
LOAD CSV WITH HEADERS FROM 'file:///unique_characters.csv' AS line FIELDTERMINATOR ','
CREATE (:Characters { name: line.Data})

LOAD CSV WITH HEADERS FROM 'file:///unique_duties.csv' AS line FIELDTERMINATOR ','
CREATE (:Duties { name: line.Data})

LOAD CSV WITH HEADERS FROM 'file:///unique_skills.csv' AS line FIELDTERMINATOR ','
CREATE (:Skills { name: line.Data})

同样查看一下 技能 的节点添加情况:

注意:由于这些节点信息在保存到csv 文件的过程中我就已经去重了,如果没有提前去重,可以把上面的 Cypher 语句中的所有 CREATE 替换为 MERGE 从而实现添加&&去重。

2 关系信息导入

现在有格式如下的csv 文件:

csv 复制代码
id,company,title,education,salary
0,广东倾云科技有限公司,【初级】web前端开发工程师,大专,39.0
1,火眼科技(天津)有限公司,IT运维工程师,大专,36.0
2,郑州玉带信息技术有限责任公司,实习web前端开发工程师,大专,42.0

同样首先把文件复制到项目对应文件夹下的import 文件夹中,然后使用Cypher 语句实现数据导入BELONG关 系:

Cypher 复制代码
LOAD CSV WITH HEADERS FROM 'file:///relation1.csv' AS row
MATCH (a:Job {name: row.id})
MATCH (b:Company {name: row.company})
MERGE (a)-[:BELONG]->(b);

看一下岗位和公司之间的关系 添加 id 和 education 、salary 之间的关系

Cypher 复制代码
LOAD CSV WITH HEADERS FROM 'file:///relation1.csv' AS row
MATCH (a:Job {name: row.id})
MATCH (b:Education {name: row.education})
MERGE (a)-[:NEED]->(b);

LOAD CSV WITH HEADERS FROM 'file:///relation1.csv' AS row
MATCH (a:Job {name: row.id})
MATCH (b:Salary {name: row.salary})
MERGE (a)-[:OFFER]->(b);

添加 id 和 skill 、duty 、 character 之间的关系

Cypher 复制代码
LOAD CSV WITH HEADERS FROM 'file:///relation_characters.csv' AS row
MATCH (a:Job {name: row.id})
MATCH (b:Characters {name: row.character})
MERGE (a)-[:REQUIRE]->(b);

LOAD CSV WITH HEADERS FROM 'file:///relation_skills.csv' AS row
MATCH (a:Job {name: row.id})
MATCH (b:Skills {name: row.skill})
MERGE (a)-[:MASTER]->(b);

LOAD CSV WITH HEADERS FROM 'file:///relation_duties.csv' AS row
MATCH (a:Job {name: row.id})
MATCH (b:Duties {name: row.duty})
MERGE (a)-[:RESPONSIBEL]->(b);

id 和 duty 之间的关系

相关推荐
数据技术说8 小时前
在 KES AI 数据库上搭一条 NL2SQL 链路:语义、召回、权限各放哪
人工智能·sql·代码规范
jay神8 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
奶油话梅糖9 小时前
用 iPhone 扫一间房,AI 帮你在浏览器里 1:1 重建它:Wes Bos 的 scan-to-threejs 工作流
人工智能·ios·iphone
锋行天下9 小时前
LangGraph HITL 实战:从 interrupt 到 useStream 的最小闭环
人工智能
kyriewen9 小时前
AI 能把页面写出来,为什么改个需求就开始崩?
前端·javascript·人工智能
张彦峰ZYF10 小时前
浏览器调试接口的官方化:从 chrome-devtools-mcp 看 Agent 原生工具层的形成
人工智能·chrome·agent·mcp·apache-2.0许可·devtools-mcp·调试闭环
Dawson Zhu10 小时前
Queen Planner深度解析:Agent竞争从模型时代进入系统时代
人工智能·语言模型·架构·aigc·agi
甲维斯11 小时前
GPT6.2Astra也很强啊,国模...!
人工智能
承渊政道11 小时前
Fooocus本地AI绘图教程:Windows部署、低门槛生图与远程访问
人工智能·windows·cpolar·fooocus·生图
熊猫钓鱼>_>11 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos