Neo4j:从文件里读数据(LOAD + FROM) → 在图里找节点(MATCH)或创建节点(MERGE) → 建立关系

一、先给你一个“总览直觉”

在 Neo4j 里,一条导入语句大致是这样工作的:

从文件里读数据(LOAD + FROM) →
在图里找节点(MATCH)或创建节点(MERGE) →
建立关系

二、一个一个拆开讲(非常重要)


1️⃣ LOAD CSV

✅ 是什么

LOAD CSV = “从 CSV 文件中一行一行读取数据”

你可以把它理解成:

“for each row in this CSV file”

✅ 你用过的例子

LOAD CSV WITH HEADERS FROM "file:///neo4j_wtg_nodes.csv" AS line 

拆解意思:

部分含义
LOAD CSV说明要读 CSV
WITH HEADERS第一行是列名
FROM "file:///xxx.csv"文件路径
AS line每一行叫 line

👉 之后你就可以用:

line.node_id 

❗什么时候用

导入数据时必用
Neo4j 从外部文件读取数据的唯一方式之一


2️⃣ FROM

✅ 是什么

FROM = 指定数据来源

在 Neo4j 中几乎只跟 LOAD CSV 搭配。

FROM "file:///xxx.csv" 

注意两点(很重要):

  1. 必须放在 neo4j/import 目录
  2. 路径前面必须是:
file:/// 

3️⃣ MATCH

✅ 是什么

MATCH = 在图数据库中“查找已经存在的节点或关系”

你可以把它理解成:

“在图里找符合条件的东西”

✅ 你用过的例子

MATCH (a:WTG_Variable {name: line.src}) MATCH (b:WTG_Variable {name: line.dst}) 

含义是:

  • 找一个 name = line.src 的节点
  • 找一个 name = line.dst 的节点

⚠️ MATCH 不会创建东西

  • 找不到 → 返回空 → 后面的语句不执行

❗什么时候用

节点已经存在,只想用它
✔ 建立关系前几乎一定要 MATCH


4️⃣ MERGE(最关键的一个)

✅ 是什么

MERGE = “如果存在就用,不存在就创建”

它相当于:

SQL 里的 SELECT + INSERT 合体版

✅ 创建节点时

MERGE (n:WTG_Variable {name: line.node_id}); 

意思是:

  • 如果已经有 name = xxx 的节点 → 用它
  • 如果没有 → 新建一个

👉 不会重复创建


✅ 创建关系时

MERGE (a)-[:INFLUENCES]->(b); 

意思是:

  • 关系存在 → 用
  • 不存在 → 创建

❗什么时候用

导入数据
防止重复节点 / 重复关系
✔ 90% 的导入语句都用 MERGE


三、把你真实用的导入语句完整拆一遍(重点)


节点导入语句

LOAD CSV WITH HEADERS FROM "file:///neo4j_wtg_nodes.csv" AS line MERGE (n:WTG_Variable {name: line.node_id}); 

逐行解释:

  1. 从 CSV 读一行
  2. 这一行叫 line
  3. line.node_id 取变量名
  4. 如果这个变量节点存在 → 用
  5. 不存在 → 创建

关系导入语句

LOAD CSV WITH HEADERS FROM "file:///neo4j_wtg_relationships.csv" AS line MATCH (a:WTG_Variable {name: line.src}) MATCH (b:WTG_Variable {name: line.dst}) MERGE (a)-[:INFLUENCES]->(b); 

核心逻辑是:

  1. 从 CSV 读一行关系
  2. 找源节点 a
  3. 找目标节点 b
  4. 建立关系(不重复)

四、给你一张“什么时候用谁”的速查表

关键字干啥的什么时候用
LOAD CSV读文件导入 CSV
FROM文件路径只跟 LOAD 用
MATCH找已有节点建关系前
MERGE找或建导入节点 / 关系
CREATE只创建不怕重复时

五、一句话帮你彻底记住(你这个层次非常适合)

LOAD 负责“读数据”,
MATCH 负责“找已有”,
MERGE 负责“别重复”,
FROM 只是“文件地址”。

Read more

Chaterm — 开源SRE副驾驶,让你与服务器直接对话!

Chaterm — 开源SRE副驾驶,让你与服务器直接对话!

Chaterm 是一款开源AI智能终端和SSH客户端。Chaterm旨在解决大规模云环境下服务器批量化操作、故障排查复杂和安全管控困难等痛点。它将 AI Agent能力嵌入终端,通过打造“对话式终端管理工具”,帮助服务端开发者、DEVOPS工程师、云计算从业人士实现云资源的智能化和规模化管理。 图说:Chaterm的核心能力包括:命令语法高亮,关键词高亮,智能命令补全,零信任安全连接,Agent智能智能代理,移动端语音输入控制,MCP功能,Agent Skills等 AI 智能助手:让运维更简单:Chaterm不仅提供 AI 对话和终端命令执行功能,更具备基于 Agent 的 AI 自动化能力,可以通过自然语言设定目标,由 AI 自动规划,并一步一步执行,最终达成需要完成的任务。 1. 智能命令生成:说出你的需求,AI 自动生成对应的 Shell 命令 2. 上下文理解:AI

By Ne0inhk
Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程

Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程

目录 ⛳️推荐 前言 1. 安装docker与docker-compose 2. 启动容器运行镜像 3. 本地访问测试 4.安装内网穿透 5. 创建公网地址 6. 创建固定公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 前言 今天和大家分享一款在G站获得了26K+的强大的开源在线协作笔记软件,Trilium Notes的中文版如何在Linux环境使用docker本地部署,并结合cpolar内网穿透工具配置公网地址,轻松实现远程在线协作的详细教程。 Trilium Notes是一个层次化的笔记应用程序,专注于建立大型个人知识库。 主要功能如下: * 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅克隆) * 丰富的所见即所得笔记编辑功能,包括带有 Markdown 自动格式化功能的表格,图像和数学 * 支持编辑使用源代码的笔记,包括语法高亮显示 * 笔记之间快速导航,全文搜索和笔记聚焦 * 无缝笔记版本控制 * 笔记属性可用于笔记组织,查询和高级脚本

By Ne0inhk
OpenClaw:一个意外爆红的 AI 助手如何改写开源规则

OpenClaw:一个意外爆红的 AI 助手如何改写开源规则

OpenClaw:一个意外爆红的 AI 助手如何改写开源规则 2025年11月24日,当 Peter Steinberger 在自己的 Mac Mini 上启动第一行代码时,他并没有想到,66天后,这个被命名为 Clawdbot 的项目会在 GitHub 上收获超过10万颗星,成为开源史上增长最快的项目之一。更戏剧化的是,这个项目会在四天内经历三次改名,从 Clawdbot 到 Moltbot 再到 OpenClaw,每一次都伴随着商标纠纷、安全争议、加密货币骗局和社区的激烈讨论。 这不是一个关于完美产品的故事,而是关于一个疲惫的创业者如何在财富自由后的空虚中找到新的方向,关于 AI 如何重新定义软件开发的速度,也关于开源社区如何在热情与恐慌之间寻找平衡。 从退休空虚到重燃激情 Peter Steinberger 的第一次创业堪称完美。2011年,这位来自奥地利维也纳的开发者在等待美国工作签证的漫长六个月里,创立了 PSPDFKit,一家专注于 PDF 文档处理 SDK 的技术公司。

By Ne0inhk

告别传输焦虑!LocalSend:一款免费开源的跨平台局域网秒传神器

日常工作生活中,你是否总被文件传输的问题困扰?微信传文件限200MB、QQ传大文件进度条卡98%、蓝牙传照片慢到“怀疑人生”、U盘随手一放就弄丢……这些痛点,让原本简单的“分享”变成了耗时耗力的麻烦事。 直到发现 LocalSend——这款被称作“去中心化隔空投送”的免费开源工具,彻底解决了局域网内跨设备传输的所有难题。它无需互联网、不经过第三方服务器,却能实现手机、电脑、电视甚至树莓派之间的高速文件互传,今天就带大家全面了解这款工具的魅力。 一、认识LocalSend:不止是“局域网传输工具” LocalSend是一款免费、开源、跨全平台的本地文件共享应用,核心定位是“去中心化的Airdrop(隔空投送)”。与传统工具不同,它不依赖云端或公网,仅通过局域网(WiFi/热点)就能让设备间直接发现、连接并传输文件,从根源上保障了数据隐私与传输效率。 从支持范围来看,它几乎覆盖了所有主流设备: * 桌面端:Windows、macOS、Linux(含Ubuntu、CentOS等) * 移动端:

By Ne0inhk