导入:RDBMS 到图

从关系型数据库导入数据

通常,在公司环境中,您已经存在的系统中拥有需要转移或操作以用于新项目的数据。很少有情况是新项目的部分或全部数据尚未在某个地方捕获。为了将现有数据获取到新流程、应用程序或系统所需的位置,您需要执行提取-转换-加载 (ETL) 流程。简单来说,您需要从现有系统中导出数据,对数据进行必要的操作以适应新的结构,然后将转换后的数据导入新的数据存储。

根据您所处的特定环境,不同的关系型到图导入工具可能提供比其他工具更好或更快的解决方案。在本指南中,我们希望讨论所有选项,以及为什么您可以或应该根据您的用例选择其中一些选项。

关系型到图导入工具

将关系型数据移到图中有三种主要方法。我们将在本页简要介绍每种方法的工作原理,但更多详细的演练位于链接的页面中。

1) LOAD CSV:可能是从关系型数据库导入数据的最简单方法。需要以 CSV 文件格式转储单个实体表和连接表。

2) APOC:Cypher® 上的强大过程。作为扩展库创建,为开发者提供常见的过程和函数。此库对于复杂的转换和数据操作特别有用。有用的过程包括 apoc.load.jdbc、apoc.load.json 等。

3) ETL 工具:Neo4j Labs UI 工具,可从 JDBC 连接将关系型转换为图。允许批量数据导入大型数据集,具有快速的性能和简单的用户体验。

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

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

5) 其他 ETL 工具:还有一些供应商和社区工具可用于类似的 ETL 流程和 GUI 交互,用于将各种格式的数据导入和导出到 Neo4j。其中一些工具还可以映射数据流和转换流程。

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

您应该在将数据从现有的关系型结构传输到图之前创建和理解您的 图数据模型。如果您没有好的数据模型,那么直接开始导入会导致您在以后清理数据时感到沮丧。

LOAD CSV

此内置 Cypher 函数允许用户使用 Cypher 语句将现有的或导出的 CSV 文件加载到 Neo4j 中,以读取、转换和将数据导入图数据库。它允许用户单独运行语句,或将它们批量运行在一个 Cypher 脚本中。由于此功能是 Cypher 内置的,因此您无需任何额外的插件或配置,而且那些已经熟悉 Cypher 的用户可能更喜欢这种方法。

但是,某些困难或复杂的转换可能难以实现或不在 Cypher 中提供。对于这些情况,您可能需要在 LOAD CSV 语句中添加 APOC 过程,或使用其他导入工具。

LOAD CSV 资源

APOC

APOC 是 Neo4j 的实用程序库,用于处理数据导入,以及数据转换和操作。从转换值到更改数据模型,此库都可以管理,允许您组合和链接过程以获得您想要的确切结果。

对于数据导入,APOC 提供多种选项,具体取决于您的数据源和格式。它可以导入文件或来自 URL 的数据,这些数据以 CSV、JSON 或 XML 格式,以及直接从数据库加载数据(使用 JDBC)。当您调用这些过程时,您可以传入数据源,并使用其他过程来操作数据或使用常规 Cypher 插入或更新到数据库。还有一些过程用于批量处理数据、添加等待/休眠命令以及处理大型数据集或易变数据源。

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

APOC 资源

ETL 工具

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 的数据进行增量更新非常有用。

驱动程序导入资源