Neo4j 导入CSV数据

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

  • Neo4j 导入CSV数据
    • 要求
      • 必须有一个或多个 CSV 文件来表示将在图中创建的节点和关系。
      • 必须有一个已启动的现有 Neo4j DBMS。
    • Neo4j 中存储为属性的数据类型
      • String:字符串
      • Long (integer values):整数值
      • Double (decimal values):双精度(十进制值)
      • Boolean:布尔值
      • Date/Datetime:时间
      • Point (spatial):点空间
      • StringArray (comma-separated list of strings):逗号分隔的字符串列表
      • LongArray (comma-separated list of integer values):逗号分隔的整数值列表
      • DoubleArray (comma-separated list of decimal values):逗号分隔的十进制值列表
    • CSV 数据导入 Neo4j 的方法
      • 使用 Neo4j 数据导入器。
      • 编写 Cypher 代码来执行导入。
        • LOAD CSV
    • 数据导入 Neo4j 的步骤
      • 了解源 CSV 文件中的数据
        • CSV 的文件结构
          • CSV 文件是否有标题信息,描述字段的名称。
          • 每行中的字段的分隔符是什么。
        • CSV 文件示例
          • Cypher 使用的默认值,逗号 (,) 是字段终止符,如果源 CSV 文件使用不同的字段终止符,则必须FIELDTERMINATOR在 CypherLOAD CSV子句中指定。
        • 数据
          • 数据规范化
            • 唯一的 ID,能够拥有与关系表相对应的 CSV 文件,其中使用 ID 来标识关系。
            • 通常对应于单个 RDBMS 表
          • 非规范化数据
            • 数据由对应于同一实体的多行表示,将作为节点加载。
            • 特点
              • CSV 文件中存在重复数据。
              • 非规范化数据通常代表 RDBMS 中多个表的数据。
              • 表示将作为节点加载的实体的 ID 必须是唯一的。
        • ID 必须是唯一
          • 从 CSV 文件加载数据时,很大程度上依赖文件中指定的 ID。
          • Neo4j 的最佳实践是使用 ID 作为每个节点的唯一属性值。
      • 检查并清理(如有必要)源数据文件的数据
        • 在开始使用源 CSV 数据之前,您必须了解每行如何使用定界符、引号和特殊字符。
        • 如果标头与表示字段的数据不对应,则无法加载数据。
        • 还必须知道您是否可以假设使用默认分隔符“,”,否则,您将需要在使用 Cypher 导入数据时使用FIELDTERMINATOR关键字 along 。LOAD CSV
        • 应该拥有 CSV 文件的本地副本,以便您可以检查其中的数据。
        • 在使用 Neo4j 数据导入器时,将需要 CSV 文件的本地副本。
        • 导入步骤
          • 1、获取或下载 CSV
            • 如果 CSV 文件是一个 URL,可以简单地在 Web 浏览器中下载它并将其保存在本地。
          • 2、确定分隔符
            • 查看文件的内容(至少是开头的行)以确定分隔符。
          • 3、确定标头是否匹配字段
            • 使用 CSV 文件,您可以在电子表格中打开它以更好地理解数据。
            • 重点提示
              • 默认情况下,每行中的所有这些字段都将作为字符串类型读入。
              • 另请注意,对于此 CSV 文件,国家或语言等多值字段的值由“|”分隔 特点。
              • 在电子表格中,检查数据可能更容易一些。
          • 4、确定所有数据是否可读
            • Cypher 代码,它将读取包含标头并指定为 URL 的 CSV 文件中的所有数据
          • 5、数据是否干净?
            • LOAD CSV WITH HEADERS FROM 'https://data.neo4j.com/importing/ratings.csv' AS row RETURN count(row)
            • 引号使用正确吗?
            • 如果元素没有值,是否会使用空字符串?
            • 是否使用 UTF-8 前缀(例如 \uc)?
            • 某些字段是否有尾随空格?
            • 这些字段是否包含二进制零?
            • 理解列表是如何形成的(默认是使用冒号(:)作为分隔符。
            • 有没有明显的错别字?
      • 创建或理解将在导入过程中实施的图形数据模型
    • Neo4j 数据模型
    • 要用于导入的数据
    • 检查数据以确保它是干净的
    • 使用 Neo4j 数据导入器
      • 概述
        • Neo4j 数据导入器(Neo4j Data Importer)是一个图形应用程序,允许将 CSV 文件从本地系统导入到图形中。
        • 使用此图形应用程序,检查 CSV 文件标头,并将它们映射到 Neo4j 图形中的节点和关系。
        • 连接到正在运行的 Neo4j DBMS 以执行导入。
        • Data Importer 的好处是无需了解 Cypher 即可加载数据。无需使用 Cypher 执行导入。
        • 导入到图形中的数据可以解释为字符串、整数、浮点数、日期时间或布尔数据。
      • 用于启动最新版本 Neo4j Data Importer 的URL
        • 用于连接到远程 DBMS:https://data-importer.neo4j.io/ ?acceptTerms=true
        • 用于连接到远程 DBMS:https://data-importer.graphapp.io/?acceptTerms =true
        • 用于连接到本地 DBMS:http://data-importer.graphapp.io/?acceptTerms= true
      • 要求
        • 必须使用 CSV 文件进行导入。
        • CSV 文件必须驻留在本地系统上,以便可以将它们加载到图形应用程序中。
        • CSV 数据必须是干净的(在之前的课程中学到了这一点)。
        • 要创建的所有节点的 ID 必须是唯一的。
        • CSV 文件必须有标题。
        • 必须启动 DBMS。
      • 步骤
        • 1、将 CSV 文件放在本地系统上,并确保它们有标题并且是干净的。
        • 2、打开 Neo4j 数据导入器
          • 使用URL 从任何 Web 浏览器打开 Data Importer 应用程序: https: //data-importer.neo4j.io/versions/0.7.0/ ?acceptTerms=true
        • 3、将本地系统上的 CSV 文件加载到图形应用程序中
        • 4、检查 CSV 文件中使用的 CSV 标头名称
          • 检查第一行确定
            • 用于创建节点的文件。
            • 用于创建关系的文件。
            • 如何使用 ID 来唯一标识数据。
        • 5、添加节点
          • a、通过单击“添加节点”图标在 UI 中添加节点。
          • b、在“映射详细信息”窗格中为节点指定标签。
          • c、选择要在“映射详细信息”窗格中使用的 CSV 文件。
        • 6、定义节点的映射详细信息
          • a、指定节点的属性(从我们选择所有字段的文件中选择添加)。
          • b、如果您希望属性使用不同的名称或类型,请编辑该属性。
          • c、指定节点的唯一 ID 属性。映射属性后,它们将在左侧面板中标记为绿色
        • 7、创建节点之间的关系
          • a、通过将节点的边缘拖动到自身或另一个节点来在 UI 中添加关系。
          • b、在“映射详细信息”窗格中指定关系的类型。
          • c、选择要在“映射详细信息”窗格中使用的 CSV 文件。
        • 8、定义关系的映射详细信息
          • a、在 Mapping Details 窗格中,指定要使用的 from 和 to 唯一属性 ID。
          • b、如果适用,为文件中的关系添加属性(可选)。
          • c、修改属性的名称或类型(如果您的数据模型需要)。
          • d、确认左侧面板中的 CSV 已全部设置为可以导入。
        • 9、执行导入
          • 导入数据。
          • 查看导入结果。
        • 10、在 Neo4j 浏览器中查看导入的数据
        • 数据导入后查看结果
          • 必须了解的数据导入器最重要的行为是属性值被写为字符串、长整型(整数值)、双精度(小数值)、日期时间或布尔值。
          • Data Importer 根据您为每个节点指定的唯一 ID 在所有节点上创建唯一性约束。
      • 其他功能
        • 映射导入或导出到 JSON 文件或 ZIP 文件。
    • 重构导入的数据
      • 查看存储在图中的属性类型
        • 查看节点的属性名称和类型
          • CALL apoc.meta.nodeTypeProperties() YIELD nodeType, propertyName, propertyTypes
        • 查看关系的属性名称和类型
          • CALL apoc.meta.relTypeProperties() YIELD relType, propertyName, propertyTypes
      • 将多值属性转换为列表属性。
        • 转换字符串属性
          • MATCH (p:Person) SET p.born = CASE p.born WHEN "" THEN null ELSE date(p.born) END WITH p SET p.died = CASE p.died WHEN "" THEN null ELSE date(p.died) END
          • 查看节点的属性名称和类型
            • CALL apoc.meta.nodeTypeProperties() YIELD nodeType, propertyName, propertyTypes
        • 转换多值属性
          • 多值属性是可以包含一个或多个值的属性。
          • 属性的多值由 “|” 字符被指定为分隔符
          • 将多值字段转换为列表,用两个 Cypher 内置函数
            • MATCH (m:Movie) SET m.countries = split(coalesce(m.countries,""), "|"),m.languages = split(coalesce(m.languages,""), "|"), m.genres = split(coalesce(m.genres,""), "|")
            • coalesce() 如果 m.countries 中的条目为空,则返回空字符串。 split()标识多值字段中的每个元素,其中“|” 字符是分隔符并创建每个元素的列表。
            • 转换为 StringArray 类型
      • 向图表添加标签。
        • 添加标签
          • 将Actor标签添加到具有ACTED_IN关系的所有节点
          • MATCH (p:Person)-[:ACTED_IN]->() WITH DISTINCT p SET p:Actor
      • 从属性值创建节点。
        • 查看图中约束
          • SHOW CONSTRAINTS
        • 创建节点之前向图中添加唯一性约束
          • 最佳做法是为图中给定类型的节点设置唯一 ID。
          • 当您在图中创建节点时,它可以防止重复节点。
          • 它加快了MERGE性能。
        • 为Genre节点的名称属性创建此唯一性约束
          • CREATE CONSTRAINT Genre_name IF NOT EXISTS FOR (x:Genre) REQUIRE x.name IS UNIQUE
        • 从Movie节点的genres属性创建Genre节点
          • MATCH (m:Movie) UNWIND m.genres AS genre WITH m, genre MERGE (g:Genre {name:genre}) MERGE (m)-[:IN_GENRE]->(g)
          • UNWIND子句将节点的流派列表中的元素扩展为行
          • MERGE,它仅在节点尚不存在时才创建该节点。
          • 从图中删除genres属性
            • MATCH (m:Movie) SET m.genres = null
          • 查看架构
            • CALL db.schema.visualization
    • 使用 Cypher 导入大型数据集
      • 导入的内存要求
        • Data Importer 是一个通用应用程序,它将图表中的所有属性创建为字符串、整数、小数、日期时间或布尔值,您可能需要在导入后对图表进行后处理或重构。数据导入器可用于包含少于 100 万行的中小型数据集。
        • 使用 Cypher 语句导入时,可以控制用于导入的内存量。在 Cypher 中,默认情况下,代码的执行是单个事务。为了处理大型 CSV 导入,需要将 Cypher 的执行分解为多个事务。
        • 使用:USING PERIODIC COMMIT,使用此代码结构导入大型数据集
          • USING PERIODIC COMMIT LOAD CSV WITH HEADERSFROM 'url-for-CSV-file'AS row
          • 此类导入的默认事务大小为 500 行。从 CSV 文件中读取 500 行后,数据将提交到图形并继续导入。能够将非常大的 CSV 文件加载到图形中,而不会耗尽内存。
          • 在 Neo4j 浏览器中,您必须在这个 Cypher 前加上:auto,即:auto USING PERIODIC COMMIT LOAD CSV…这告诉 Neo4j 使用事务的自动检测。
            • 减少导入所需的内存量。
      • 优势
        • 可以在导入期间执行类型转换和一些“重构”。也就是说,可以自定义属性类型的管理方式,因此无需在加载后进行任何后处理。
        • 在导入数据之前,必须检查并可能清理数据。将使用的大型 CSV 数据文件已被清理。
        • 首先确定每个文件中的行数
          • LOAD CSV WITH HEADERS FROM '文件' AS ROW RETURN COUNT(ROW)
      • 改用Cypher导入步骤
        • 删除图中的所有节点和关系。
          • match (u:实体) detach delete u; match (n) detach delete n
        • 确保图中存在所有约束。
        • 导入电影 和流派数据。
        • 导入人员数据。
        • 导入 ACTED_IN 关系。
        • 导入 DIRECTED 关系。
        • 导入用户数据。

文章来源地址https://www.toymoban.com/news/detail-768753.html

到了这里,关于Neo4j 导入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日
    浏览(79)
  • Neo4j导入CSV文件(实体和关系)

    打开cmd切换到neo4j安装目录的bin下,输入以下命令 如果想读取不在import directory中的CSV,则: (1)先改变neo4j默认设置,即:删除dbms.directories.import=import或者在该语句前加“#”; (2)使用 “LOAD CSV FROM file:///C:/XXX/name.csv”(即:file:///+绝对路径), 导入本地CSV文件 。

    2024年02月15日
    浏览(46)
  • Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱

    1.安装JDK( Ubuntu20.04 JDK11) 确认安装路径为/usr/lib/jvm/java-11-openjdk-amd64/bin/java。 2 安装Navicat查看知识库(单机版推荐数据库)(此步骤可忽略) 官网下载安装包: 手头的数据库是.db格式,使用nvicat查看。 安装好nvicat后,导入demo.db文件,将需要的数据转换成csv格式。 3 安装Neo4

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

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

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

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

    2024年02月07日
    浏览(54)
  • Neo4j---(2)批量导入实体和关系csv文件之neo4j-admin import

    要点: neo4j-admin import命令的适用情况:未初始化空数据库or新建数据库 csv文件的编码:有中文用 “UTF-8” 节点csv和关系csv文件的固定格式以及必要的属性列 一、neo4j-admin import命令 1.作用:批量导入csv数据 2.条件:必须有权限对dbmis.directories.data 和dbms.directories.log进行写入操作

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

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

    2024年02月20日
    浏览(38)
  • Neo4J入门笔记[2]---导出数据为CSV

    在上一节《Neo4J入门笔记[1]—安装以及Cypher基本语法》 笔者主要分享了Neo4J的安装已经常用的命令。这个章节笔者分享从Neo4j里面导出数据到CSV。一个简单的方法,就是调用下面的存储过程。 但是如果没有对Neo4j的默认配置进行修改的话,其会报出下面的错误。 解决方法就是

    2024年02月11日
    浏览(26)
  • Neo4j数据库中导入CSV示例数据

    本文简要介绍Neo4j数据库以及如何从CSV文件中导入示例数据,方便我们快速学习测试图数据库。首先介绍简单数据模型以及基本图查询概念,然后通过LOAD CSV命令导入数据,生成节点和关系。 读者可以快速安装Neo4j Desktop,启动并创建`City Calls’项目 ,启动数据库并打开Neo4j

    2024年02月15日
    浏览(60)
  • 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日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包