Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版

这篇具有很好参考价值的文章主要介绍了Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习LOAD CSV🚀

       在使用Neo4j进行大量数据导入的时候,发现如果用代码自动一行一行的导入效率过低,因此明白了为什么需要用到批量导入功能,在Neo4j中允许批量导入CSV文件格式,刚开始从网上的中看了各种半残的博客或者视频,拼拼凑凑也实现了功能,然后想写个博客记录一下,一想直接把代码沾上来讲的也不是很全面,就打算按照官方文档的思路讲一下,然后给中间补充一些文档中往往会省略的实践细节,故有了这篇博客,在对官方文档的翻译中加入自己对技术的理解会比机翻或者要求严格的文档更好理解一些。本文只介绍前几个常用的节点和关系的批量导入不然内容太多了,后面不常用的就先不介绍了。


阅读本文需要对Neo4j的基础知识有一些了解,如果还没有学习,可以阅读本文章的前置文章。
Neo4j 新手教程 环境安装 基础增删改查 python链接 常用操作 纯新手向


首先给出Neo4j的官方文档的地址:
https://neo4j.com/docs/cypher-manual/current/clauses/load-csv/
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

1.LOAD CSV 简介

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
LOAD CSV 是用来将CSV文件导入到Neo4j数据集当中的。

LOAD CSV FROM 'https://data.neo4j.com/bands/artists.csv'
AS row
MERGE (:Artist {name: row[1], year: toInteger(row[2])})
  • FROM 后面接一个文件所在路径的字符串
  • 命令是一行一行处理文件的,每次处理的时候,用AS将这一行的数据临时存储在一个变量里(在这个例子中这个变量是row)
  • 用MERGE访问row变量然后存入到数据集中

LOAD CSV 支持本地和远程的URL,本地路径关联在Neo4j的数据库的文件夹中。

URL Uniform Resource Locator
雅称:统一资源定位符
俗称:文件路径(新手可以直接这吗理解,虽然严格意义不准确)

2. Import CSV data into Neo4j 把CSV导入Neo4j 极简版(重要)

       可以将CSV文件保存在本地数据集的文件夹import下面,然后使用一个file:///前缀名字。下面是官方给的一个例子,接下来我们具体实际操作一下
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

       首先是保存这个csv文件,首先我们直接来一个简单的txt直接过去,之后再做用excel转的,直接新建一个txt然后粘进去。

1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
       然后点右上角的文件选择另存为,然后进入到Neo4j的import文件夹的目录下

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
       之后把文件后缀的txt直接改为csv,然后确认一下文件编码为UTF-8
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
       然后打开该目录你会看到一个csv文件
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
       用excel打开看一眼,嗯!
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

       然后打开Neo4j的控制台。在上方的命令框输入命令

LOAD CSV FROM 'file:///artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN
  a.name,
  a.year

如果不知道如何打开请移步愚作:Neo4j 新手教程 环境安装 基础增删改查 python链接 常用操作 纯新手向

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

       按下Ctrl+Enter或者右上侧的蓝色小三角运行命令,运行结果如下,导入成功。

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

       如果不想保存到数据库文件的import文件夹下,直接换成本地路径直接导入,例如直接把文件复制到E盘,然后把路径直接换成E:/artists.csv结果是不行。

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

       为了解决这个问题需要求改Neo4j数据库的配置文件,首先在数据库的conf文件下下找到neo4j.conf文件然后用记事本打开。
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
找到这个serve.directories.import=import给它前面加一个#号注释掉

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
注释之后变成这样
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
       然后Ctrl+S保存一下,或者关闭的时候点一下也行,然后把E:/artists.csv改成'file:///E:/artists.csv'然后再运行,成功!

  • file:///必须加,不加报错
  • 在配置文件中注释了server.directories.import=import之后,把路径设置回file:///artists.csv,也依旧可以从Import文件下下导入文件
LOAD CSV FROM 'file:///E:/artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN
  a.name,
  a.year

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

3.Import compressed CSV files 导入压缩的csv文件

       LOAD CSV也可以上传压缩成ZIP的CSV文件,不管套了几个文件,最后这个ZIP文件里只能有一个CSV文件,文档里写的太官方,我这里尝试重新描述一下,然后再给它分几种情况测一测,挖一挖它这个功能。
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
好现在import文件下直接右键CSV压缩一层得到一个zip压缩包
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后再Neo4j控制台导入OK成功

LOAD CSV FROM 'file:///artists.zip' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN
  a.name,
  a.year

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后将压缩文件从import目录移动到E盘,然后运行OK

LOAD CSV FROM 'file:///E:/artists.zip' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN
  a.name,
  a.year

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后开始套娃
首先套了两层文件
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后将套娃文件打包成zip
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

然后运行ok可行

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
接下来套娃的时候把套娃的文件夹名字修改一下,先修改一下套娃中间文件夹的名字,给它改成a再打包再运行
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
OK可行

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后把套娃最外层的文件夹的名字改了,改成和CSV文件的名字不一致,然后打包成zip
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
这个不可行
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

然后把最外层的文件夹名字改成和CSV一致,然后在artist.csv在路径下加一些奇奇怪怪的文件,然后再打包成zip然后运行

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
可行
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后在路径下加个其他的csv文件,然后再打包成csv然后运行
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库OK可行
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

结论:和文档中的描述基本一致,就说最外层文件夹的名字得和要导入的csv文件一致,最外层文件夹名字是哪个就读哪个CSV

桀桀桀!感受到中国算法工程师的执着了吗Neo4j的官方人员(笑)。

4.Import data from relational databases 导入关联数据(重要)

       在官方文档中给了这样一个例子,一个数据和其作者的数据集,那这里不但包含着作者和书籍的节点node,还包含着A作者写了B书的一个关系relationship
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
       接下来老操作,直接复制到txt文件然后给它转存成UTF-8编码的csv,文件名字是books,要是忘了咋操作或者跳读到这的话,翻回到上面的这里。

Import CSV data into Neo4j 把CSV导入Neo4j 极简版

id,title,author,publication_year,genre,rating,still_in_print,last_purchased
19515,The Heights,Anne Conrad,2012,Comedy,5,true,2023/4/12 8:17:00
39913,Starship Ghost,Michael Tyler,1985,Science Fiction|Horror,4.2,false,2022/01/16 17:15:56
60980,The Death Proxy,Tim Brown,2002,Horror,2.1,true,2023/11/26 8:34:26
18793,Chocolate Timeline,Mary R. Robb,1924,Romance,3.5,false,2022/9/17 14:23:45
67162,Stories of Three,Eleanor Link,2022,Romance|Comedy,2,true,2023/03/12 16:01:23
25987,Route Down Below,Tim Brown,2006,Horror,4.1,true,2023/09/24 15:34:18

Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
ok好的看一下,然后右侧的这个时间是缩略了,展开就能看见了不用害怕。
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

// Create `Book` nodes 导入节点
LOAD CSV WITH HEADERS FROM 'file:///books.csv' AS row
MERGE (b:Book {id: row.id, title: row.title})
MERGE (a:Author {name: row.author});

// Create `WROTE` relationships 导入关系
LOAD CSV WITH HEADERS FROM 'file:///books.csv' AS row
MATCH (a:Author{name: row.author})
MATCH (b:Book{id: row.id})
MERGE (a)-[:WROTE]->(b);

这段代码使用了Cypher查询语言来处理两个主要任务:
首先,它从一个CSV文件中导入数据来创建Book和Author节点;
其次,它基于相同的CSV文件创建这些Book和Author节点之间的WROTE关系。下面是对这两个过程的详细解释:

第一部分:创建Book和Author节点

LOAD CSV WITH HEADERS FROM 'file:///books.csv' AS row
MERGE (b:Book {id: row.id, title: row.title})
MERGE (a:Author {name: row.author});
  • LOAD CSV WITH HEADERS FROM 'file:///books.csv' AS row这条命令告诉Neo4j从给定的路径file:///books.csv' 加载一个CSV文件,该文件具有标题行(即每列的第一行包含列名)。AS row表示每一行数据都会被赋予变量名row,之后可以通过这个变量访问行中的数据。
  • MERGE (b:Book {id: row.id, title: row.title}):MERGE命令用于创建一个新的Book节点,或者如果具有相同id和title属性的节点已经存在,则匹配(不重复创建)该节点。这里,row.id和row.title是从CSV文件中读取的每一行的对应列数据。
  • MERGE (a:Author {name: row.author}):类似地,这条命令用于创建或匹配一个Author节点,其name属性由当前行的author列提供。

第二部分:创建WROTE关系

LOAD CSV WITH HEADERS FROM 'file:///books.csv' AS row
MATCH (a:Author{name: row.author})
MATCH (b:Book{id: row.id})
MERGE (a)-[:WROTE]->(b);
  • 加载数据部分一样
  • MATCH (a:Author{name: row.author})和MATCH (b:Book{id: row.id}):这两个MATCH命令分别用于查找当前行中提到的Author和Book节点。它们通过比较name和id属性与文件中的相应列来定位节点。
  • MERGE (a)-[:WROTE]->(b):最后,MERGE命令用来创建一个新的WROTE关系,从找到的Author节点指向Book节点。如果这样的关系已经存在,则不会创建重复的关系。

然后运行上诉代码这里我把URL改成本地了,而文档中用的是网络URL,这里还是先了解怎么在本地导入节点和关系网络导入暂时不需要
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库
然后点一下这个WROTE,ok完美
Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版,知识图谱,neo4j,学习,数据库

结束

       然后文档的后面还有一些增加属性以及处理数据例如去除Null值等诸如此类的工作,不是重点暂时就先不介绍了。然后有个小麻烦的地方,在导入不同类别的数据的时候需要分批导入,类别参数不能直接用CSV中的导入值,我自己有个数据集有50类关系,我手动输入了50次命令,我简单了解了一下之后应该可以用Foreach命令解决,这个问题会纳入到后续的更新规划当中。文章来源地址https://www.toymoban.com/news/detail-840641.html

到了这里,关于Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Neo4j:入门基础(二)~ 数据导入Neo4J

    neo4j导入数据的方式有以下几种: Cypher create 语句,为每一条数据写一个create Cypher load csv 语句,将数据转成CSV格式,通过LOAD CSV读取数据。 neo4j-admin import导入 官方提供的Java API - BatchInserter 大牛编写的 batch-import 工具 neo4j-apoc load.csv + apoc.load.relationship 针对实际业务场景,定制

    2024年02月09日
    浏览(58)
  • Neo4j---(3)批量导入实体和关系csv文件之LOAD CSV

    一、几大导入方式的差异 1. neo4j-admin import: 只能初始化,若要用的话必需清空之前的数据库。 不能很好的适应不断要添加新节点和关系的需求。 必需关闭数据库 neo4j stop 2. LOAD CSV 可以在原数据库基础上新增数据,导入中小型数据,1kw条左右 不用关闭数据库,可以直接在b

    2024年02月07日
    浏览(65)
  • 图数据库_Neo4j学习cypher语言_使用CQL_构建明星关系图谱_导入明星数据_导入明星关系数据_创建明星关系---Neo4j图数据库工作笔记0009

    首先找到明星数据   可以看到有一个sheet1,是,记录了所有的关系的数据   然后比如我们搜索一个撒贝宁,可以看到撒贝宁的数据   然后这个是构建的CQL语句   首先我们先去启动服务 neo4j console     然后我们再来看一下以前导入的,可以看到导入很简单, 就是上面有CQL 看一下节

    2024年02月12日
    浏览(45)
  • Neo4j 导入CSV数据

    Neo4j 导入CSV数据 要求 必须有一个或多个 CSV 文件来表示将在图中创建的节点和关系。 必须有一个已启动的现有 Neo4j DBMS。 Neo4j 中存储为属性的数据类型 String:字符串 Long (integer values):整数值 Double (decimal values):双精度(十进制值) Boolean:布尔值 Date/Datetime:时间 Point (sp

    2024年02月03日
    浏览(48)
  • Neo4j笔记-数据迁移(导出/导入)

    这里先说明以下几点: Neo4j在4.0下版本默认的库名是:graph.db Neo4j在4.0上版本默认的库名是:neo4j.db 不管是Neo4j,还是Neo4j Desktop,都会在bin目录下有neo4j、neo4j-admin软件。在conf目录下,有neo4j.conf配置文件。 这个就是我装的,Test项目,里面带有neo4j 如果需要把低版本的库数据导

    2024年02月14日
    浏览(46)
  • Neo4j导出和导入数据库

    Neo4j 4.x版本和5.x版本的导出导入有区别,这里分开来讲。 导入导出之前要先 关闭 neo4j服务。 进入 $NEO4J_HOME%/bin 目录执行如下数据库导出命令: 提示: 其中 neo4j.db 是你需要导出的默认数据库。可以去 conf 文件中查看,默认数据库是哪一个。

    2024年02月16日
    浏览(46)
  • neo4j学习笔记:使用neo4j-admin import命令批量处理CSV文件

    neo4j-admin是管理neo4j DBMS的主要工具之一,是一种命令行工具。 neo4j admin命令需与当前neo4j用户一致。 (1)位置: 以neo4j desktop为例,neo4j-admin在当前project下活动的database的dbms文件夹下的bin文件夹中。 (2)启动方式: 打开当前project的terminal; 进入bin文件夹:执行cd bin,此时,

    2024年02月01日
    浏览(51)
  • Neo4j 图数据库的导入导出

    目录 neo4j Desktop页面层级: 图数据库导出: 图数据库导入: 图数据库的分库分表: 以Neo4j Desktop为例: 分为三个层级: Project:用于区分多个项目 DBMS:一个项目内,可以有多个版本的DBMS database:一个DBMS内,可以有多个数据库 选中一个database,点击右边的 ··· ,点击dump,

    2024年02月09日
    浏览(51)
  • python将csv数据导入neo4j

    参考链接:https://github.com/jm199504/Financial-Knowledge-Graphs/tree/master (No data) Unnamed: 0 TS代码 股票代码 股票名称 行业 0 0 000001.SZ 1 平安银行 银行 1 1 000002.SZ 2 万科A 全国地产 2 2 000004.SZ 4 国华网安 互联网 3 3 000005.SZ 5 世纪星源 环境保护 4 4 000006.SZ 6 深振业A 区域地产 Unnamed: 0 ts_code an

    2024年02月22日
    浏览(48)
  • Neo4j数据库导入导出dump方法

    首先要关闭neo4j; neo4j stop 导出 其中test文件夹在neo4j下面 导入 导入成功: 再启动neo4j neo4j start

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包