Neo4j---(3)批量导入实体和关系csv文件之LOAD CSV

这篇具有很好参考价值的文章主要介绍了Neo4j---(3)批量导入实体和关系csv文件之LOAD CSV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、几大导入方式的差异

1. neo4j-admin import:

  • 只能初始化,若要用的话必需清空之前的数据库。
  • 不能很好的适应不断要添加新节点和关系的需求。
  • 必需关闭数据库 neo4j stop

2. LOAD CSV

  • 可以在原数据库基础上新增数据,导入中小型数据,1kw条左右
  • 不用关闭数据库,可以直接在browser操作
  • CSV文件的URL可以由后面的任意表达式来确定
  • LOAD CSV也支持通过HTTPS、HTTP和FTP来访问CSV文件
  • LOAD CSV支持以gzip,Deflate和ZIP压缩的资源
  • 但数度较慢

二、LOAD CSV 文件URL的配置项

1. 在配置文件中,默认是运行使用file:///URL来加载数据的。

neo4j批量导入,neo4j

2. 若把值改为false,则完全禁止LOAD CSV访问文件系统。

dbms.security.allow_csv_import_from_file_urls=false //完全禁止访问文件系统

 3. file:///根路径的设置:默认在import文件夹

# See the `LOAD CSV` section of the manual for details.
dbms.directories.import=import
  • 可以限制访问数据库import文件夹以外的文件

示例:若URL为’file:///ceshi.csv‘

LOAD CSV 语句从 <NEO4J_HOME>/import/ceshi.csv 读取数据

绝对路径:D:/neo4j/neo4j-community-4.4.18/import/ceshi/ceshi.csv

相对路径:file:///ceshi/ceshi.csv

  • file:/// == <NEO4J_HOME>/import/

4.也可以把默认的访问地址改为别的文件夹,即:dir_name

dbms.directories.import=dir_name
  • TIPS:若此行代码生效后,数据库则不能访问该文件夹以外的其他文件。

 

 三、LOAD CSV语句

USING PERIODIC COMMIT n

LOAD CSV WITH HEADERS FROM 'URL' AS line

  •  with headers: 读取首行 读取文件第一行作为参数名  若没有该参数名,则要用line[0]、line[1]来索引;有该参数则可用line.name来索引
  •  as line: 重命名  建立索引
  • USING PERIODIC COMMIT n:分批导入 每n条提交一次;默认值为1000
  • fieldterminator',' :自定义字段定界符 默认csv分隔符为逗号 

TIPS: CSV读取文件数据是String类型,可以通过函数转换为其他类型 toInt()...

示例:

LOAD CSV WITH HEADERS FROM 'file:///ceshi/ceshi.csv' AS line

CREATE (:盾构机初始维护 { ID: line.ID, 系统名称: line.系统名称, 部件名称: line.部件名称, 初始维护工作内容: line.初始维护工作内容, 补充说明: line.补充说明, 油品名称: line.油品名称, 备注: line.备注, LABEL: line.LABEL})

neo4j批量导入,neo4j

neo4j批量导入,neo4j

问题1:

  • 不能判断节点是否已经存在,会重复导入 没有判别能力
  • 与neo4j-admin import相比:ID只是属性列 不是索引列 没有唯一性

解决:

  • 先设定好文档,一次性导入,避免冲突。---最好的解
  • 利用create constraint on俩添加唯一性约束

CREATE CONSTRAINT ON (n:`label_name`) ASSERT n.ID IS UNIQUE 

label_name:即用label来筛选节点,再将节点的id设唯一约束

问题2???用merge来判断节点是否存在有很大的问题:若原数据库某些节点的某些属性为空值,则在用merge时会报错:

neo4j批量导入,neo4j

解决1:---不成功

  •  查询到官网的解决办法:Explanation of error "Cannot merge node using null property value for" - Knowledge Base (neo4j.com)

LOAD CSV WITH HEADERS FROM 'file:///ceshi1/7.4.3-4盾构机周维护1.csv' AS line with line where line.补充说明 and line.备注 is not null

merge (:盾构机周维护 { ID: line.ID, 系统名称: line.系统名称, 部件名称: line.部件名称, 周维护工作: line.周维护工作, 补充说明: line.补充说明, 备注: line.备注, LABEL: line.LABEL })

  • 依旧存在问题:对于新添加节点中有被忽略属性其值不为空时,会报错
  • 下面例子为:新添加的节点其’补充说明‘列不为空,则无法处理。

neo4j批量导入,neo4j

解决2:

  • 将所有空值单元格用'\'填充  结合 merge 则不会出现空值报错

先添加的文件节点文件【7.4.3-4盾构机周维护.csv】:空值填充

neo4j批量导入,neo4j

 二次导入节点文件【7.4.3-4盾构机周维护1.csv】---仅新增最后一个

neo4j批量导入,neo4j

 结果:添加成功

neo4j批量导入,neo4j

新添加节点信息如下图: 

neo4j批量导入,neo4j

四、流程小结

Step1:命令直接创建节点 用 MERGE 

LOAD CSV WITH HEADERS FROM 'file:///file_name.csv' AS line 

MERGE (:Label { ID: line.ID, 系统名称: line.系统名称, 部件名称: line.部件名称, 周维护工作: line.周维护工作, 补充说明: line.补充说明, 备注: line.备注, LABEL: line.LABEL }) 

自动命令生成见python代码: 3.Load_csv.py

Step2:创建唯一约束-ID列 CREATE CONSTRAINT ON

CREATE CONSTRAINT ON (n:`label`) ASSERT n.ID IS UNIQUE 

Step3:检验能否判断节点是否存在 继续用step1的代码导入新文件~

补充:

  • 删除节点命令:用LABEL检索---换成要删除的节点的label

MATCH (r:`LABEL`) DETACH DELETE r

  • 删除约束命令:---与创建约束代码对应

DROP CONSTRAINT ON (n:`LABEL`)  ASSERT n.ID IS UNIQUE

Neo4j系列记录: 

(1)导入导出dump文件:(21条消息) Neo4j---(1)导入导出dump文件_俩小歪的博客-CSDN博客 

(2)批量导入实体和关系csv文件之neo4j-admin import:

(6条消息) Neo4j---(2)批量导入实体和关系csv文件之neo4j-admin import_俩小歪的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-723694.html

到了这里,关于Neo4j---(3)批量导入实体和关系csv文件之LOAD CSV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Neo4j的使用+导入导出csv文件

    1.进入cmd控制界面,然后进入到自己的NEO4J的bin目录下,输入neo4j,然后其会展示一些neo4j的命令。 2.先进行 neo4j install-service 操作,安装控制服务台,再进行 neo4j start 命令打开,然后 neo4j console 打开控制台。 复制网址并打开 http://localhost:7474 第一次进入需注册,初始密码是n

    2024年02月03日
    浏览(108)
  • Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版

           在使用Neo4j进行大量数据导入的时候,发现如果用代码自动一行一行的导入效率过低,因此明白了为什么需要用到批量导入功能,在Neo4j中允许批量导入CSV文件格式,刚开始从网上的中看了各种半残的博客或者视频,拼拼凑凑也实现了功能,然后想写个博客记录一下

    2024年03月16日
    浏览(47)
  • 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日
    浏览(50)
  • neo4j创建数据库及导入csv文件内容详解

    neo4j展示知识图谱主要需要两类数据:节点数据和关系数据。本节主要讲解数据的输入格式。(示例数据较简单,可对照自己的数据进行调整) 1.节点文件 创建excel表格,以演员、电影数据为例: 第一列为属性名,可表示为属性名_Id,上图的属性名为actor或movie, 注意取值不

    2024年02月05日
    浏览(49)
  • 知识图谱:py2neo将csv文件导入neo4j

    安装py2neo 安装 python 中的 neo4j 操作库: pip install py2neo 安装 py2neo 后我们可以使用其中的函数对 neo4j 进行操作。 图数据库 Neo4j 中最重要的就是结点和边(关系),结点之间靠边联系在一起,每个结点也有属于自己的属性。 也就是说我们在用 pyhton 操作 Neo4j 的时候只需要创造

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

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

    2024年02月03日
    浏览(47)
  • 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 Cypher语法教程 实体、关系增删改、高级查询

    安装完neo4j ,访问对应的web页面端口,输入以下命令进行学习 创建节点 创建一个标签为stu的节点 (标签:将数据进行分类,方便管理) 创建一个标签为stu 且带有属性值的节点 查询节点 按照标签查询 运行结果如下图 neo4j默认是将name属性用于展示 按照id进行查询 按照属性进

    2024年02月06日
    浏览(40)
  • neo4j批量追加属性、节点、关系

    前提:这个方法是用python连接neo4j再循环执行cql语句来实现的,适合1w条记录以内的数据,太大了就比较慢,平均1s执行30条语句左右。 主要的不同就在于cql语句的使用 连接数据库: 读取节点表和关系表,该文件是存储好的csv文件 中文是替代的文件名字,不是源文件名 替换

    2024年02月16日
    浏览(50)
  • 批量数据导入Neo4j的方式

    Linux版本: Ubuntu Kylin 16.04 Neo4j版本: Neo4j-3.2.7 最常见的数据格式之一是平面文件上的 行和列 。这种电子表格格式被用于各种关系型数据库的导入和导出,所以用这种方式检索现有数据是很容易的。很明显,CSV格式就是这种类型。 Cypher中的 LOAD CSV 命令允许我们指定一个文件

    2023年04月12日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包