导入:从 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 资源
-
Cypher 手册:LOAD CSV
Neo4j Data Importer
请参阅 Neo4j Data Importer 文档以获取完整指南。
APOC
APOC 是 Neo4j 的实用程序库,用于处理数据导入、转换和操作。从转换值到修改数据模型,这个库可以管理所有这些工作,允许您组合和链接过程,以获得您想要的结果。
对于数据导入,APOC 根据您的数据源和格式提供了多种选择。它可以导入 CSV、JSON 或 XML 格式的文件或来自 URL 的数据,也可以直接从数据库(使用 JDBC)加载数据。调用这些过程时,您可以传入数据源,并使用其他过程来操作数据,或使用普通 Cypher 语句将数据插入或更新到数据库中。此外,还有用于数据批处理、添加等待/睡眠命令以及处理大型数据集或不稳定数据源的过程。
该库中的转换过程几乎是无穷无尽的,允许开发者处理动态标签或关系、更正/跳过空值、格式化日期或其他值、生成哈希值以及处理其他棘手的数据场景。如果您需要一种灵活且可自定义的数据处理方式,APOC 可能是您的首选。在复杂场景下使用该库的缺点是,它可能会导致需要编写大量的代码来处理多种数据转换。
ETL Tool
Neo4j 的 ETL 工具提供了一个简单的 GUI,允许您将数据从几乎任何类型的关系型数据库加载到 Neo4j 实例中。该过程包括设置到几乎任何类型关系型数据库的 JDBC 连接,然后进行自动映射以生成可在可视化界面中编辑的图数据模型。最后,您可以选择在运行中或关闭的 Neo4j 实例上执行加载并导入数据。
该工具为从关系型数据库到 Neo4j 的初步快速、高效导入提供了一个简单、直接的过程。但是,目前它尚不支持处理增量加载或对现有数据的更新。这是一个由社区驱动的工具,因此更新是根据需要进行的,而不是按预定时间表进行的。
ETL 工具资源
-
开发者指南:Neo4j ETL Tool
-
博客文章:将关系型数据转换为图数据库
-
源代码:Github 项目
Apache Hop
Apache Hop(Hop Orchestration Platform 的缩写)是一个数据编排和数据工程平台。它旨在促进数据流的创建和管理。
Neo4j Apache Hop 项目的源代码已集成到 Apache Hop 框架中。最近的版本也包含了 Neo4j 插件。
借助 Apache Hop,您可以将大型数据集加载到 Neo4j 中、更新图数据以及获取日志信息。
|
请注意,该工具是由社区贡献的,不提供官方支持。 |