导入:从 RDBMS 到图数据库

从关系型数据库导入数据

在企业环境中,通常现有的系统数据需要迁移或处理以供新项目使用。很少有新项目的所有或部分数据还没有在某个地方被捕获。为了将现有数据迁移到新流程、应用程序或系统所需的格式,您需要执行提取-转换-加载 (ETL) 过程。简单来说,您需要从现有系统中导出数据,根据新结构对数据进行必要的处理,然后将转换后的数据导入到新的数据存储中。

根据您所处的工作环境,不同的“关系型转图”导入工具可能会提供比其他工具更好或更快的解决方案。在本指南中,我们将讨论所有可用的选项,以及为什么您可以在特定用例中选择其中某些工具而非其他工具。

关系型转图导入工具

将关系型数据迁移到图数据库主要有三种方法。我们将在本页面简要介绍每种方法的运作方式,更详细的操作指南请参见链接页面。

  • LOAD CSV:可能是从关系型数据库导入数据最简单的方法。需要将各个实体表和连接表导出为 CSV 文件格式。

  • Data Importer:用于将数据导入 Neo4j 的基于 UI 的工具。既可作为独立工具使用,也可作为 Aura 中的一项服务使用。

  • APOC:Awesome Procedures on Cypher®。作为扩展库创建,旨在为开发者提供通用的过程和函数。该库对于复杂的转换和数据处理特别有用。实用的过程包括 apoc.load.jdbc、apoc.load.json 等。

  • ETL Tool:Neo4j Labs 的 UI 工具,通过 JDBC 连接实现关系型到图数据库的转换。支持针对大数据集进行批量数据导入,性能卓越且用户体验简单。

  • Apache Hop:用于企业级数据导出和导入的开源工具。可以轻松处理各种数据源和大型数据集,并组织数据流处理过程。

请注意,此导入选项不提供官方支持。

  • 其他 ETL 工具:还有一些供应商和社区工具可用于类似的 ETL 过程,以及通过 GUI 交互将各种格式的数据存入或导出 Neo4j。其中一些工具还可以映射数据在系统中的流转和转换过程。

  • 通过驱动程序以编程方式导入:能够从关系型数据库(或其他表格结构)中检索数据,并使用 Bolt 协议通过您选择的编程语言驱动程序将其写入 Neo4j。

在将数据从现有的关系型结构迁移到图数据库之前,您应该创建并理解您的图数据模型。如果没有一个良好的数据模型,直接进行导入可能会导致后续清理数据时遇到困难。

LOAD CSV

这个内置的 Cypher 函数允许用户获取现有或已导出的 CSV 文件,并使用 Cypher 语句将它们加载到 Neo4j 中,从而读取、转换并将数据导入图数据库。它允许用户单独运行语句,或在 Cypher 脚本中批量运行。由于此功能在 Cypher 中是开箱即用的,因此您不需要任何额外的插件或配置,熟悉 Cypher 的用户可能更倾向于这种方式。

然而,某些困难或复杂的转换可能无法在 Cypher 中轻松实现。对于这些情况,您可能需要向 LOAD CSV 语句添加 APOC 过程,或者使用其他导入工具。

LOAD CSV 资源

Neo4j Data Importer

请参阅 Neo4j Data Importer 文档以获取完整指南。

APOC

APOC 是 Neo4j 的实用程序库,用于处理数据导入、转换和操作。从转换值到修改数据模型,这个库可以管理所有这些工作,允许您组合和链接过程,以获得您想要的结果。

对于数据导入,APOC 根据您的数据源和格式提供了多种选择。它可以导入 CSV、JSON 或 XML 格式的文件或来自 URL 的数据,也可以直接从数据库(使用 JDBC)加载数据。调用这些过程时,您可以传入数据源,并使用其他过程来操作数据,或使用普通 Cypher 语句将数据插入或更新到数据库中。此外,还有用于数据批处理、添加等待/睡眠命令以及处理大型数据集或不稳定数据源的过程。

该库中的转换过程几乎是无穷无尽的,允许开发者处理动态标签或关系、更正/跳过空值、格式化日期或其他值、生成哈希值以及处理其他棘手的数据场景。如果您需要一种灵活且可自定义的数据处理方式,APOC 可能是您的首选。在复杂场景下使用该库的缺点是,它可能会导致需要编写大量的代码来处理多种数据转换。

APOC 资源

ETL Tool

Neo4j 的 ETL 工具提供了一个简单的 GUI,允许您将数据从几乎任何类型的关系型数据库加载到 Neo4j 实例中。该过程包括设置到几乎任何类型关系型数据库的 JDBC 连接,然后进行自动映射以生成可在可视化界面中编辑的图数据模型。最后,您可以选择在运行中或关闭的 Neo4j 实例上执行加载并导入数据。

该工具为从关系型数据库到 Neo4j 的初步快速、高效导入提供了一个简单、直接的过程。但是,目前它尚不支持处理增量加载或对现有数据的更新。这是一个由社区驱动的工具,因此更新是根据需要进行的,而不是按预定时间表进行的。

ETL 工具资源

Apache Hop

Apache Hop(Hop Orchestration Platform 的缩写)是一个数据编排和数据工程平台。它旨在促进数据流的创建和管理。

Neo4j Apache Hop 项目的源代码已集成到 Apache Hop 框架中。最近的版本也包含了 Neo4j 插件。

借助 Apache Hop,您可以将大型数据集加载到 Neo4j 中、更新图数据以及获取日志信息。

请注意,该工具是由社区贡献的,不提供官方支持。

使用驱动程序以编程方式导入

若要使用编程语言导入数据,您可以使用您首选语言的 Neo4j 驱动程序,并执行 Cypher 语句与数据库进行交互。如果您无法使用 Cypher Shell,或者数据无法以可访问的文件形式获得,那么此过程也很有帮助。

您可以设置通往 Neo4j 的驱动程序连接,然后执行从应用程序层通过驱动程序传递到数据库的 Cypher 语句,以执行各种操作——包括大量的插入和更新。使用驱动程序和编程语言对于将从其他系统传递到 Neo4j 的数据进行增量更新非常有用。

驱动程序导入资源