导入: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 函数允许用户获取现有或导出的 CSV 文件,并使用 Cypher 语句将其加载到 Neo4j 中,以读取、转换并将数据导入图数据库。它允许用户单独运行语句,或在 Cypher 脚本中批量运行。由于此功能在 Cypher 中开箱即用,因此您不需要任何额外的插件或配置,熟悉 Cypher 的用户可能会更喜欢这种方式。
但是,某些困难或复杂的转换可能不容易实现或在 Cypher 中提供。对于这些情况,您可能需要向 LOAD CSV
语句添加 APOC
过程,或使用其他导入工具。
LOAD CSV 资源
-
Cypher 手册:LOAD CSV
-
文档教程:用于导入的 LOAD CSV
APOC
APOC 是 Neo4j 的实用工具库,用于处理数据导入以及数据转换和操作。从值转换到数据模型修改,这个库可以管理所有这些,让您能够组合和链接过程,以获得您正在寻找的精确结果。
对于数据导入,APOC 根据您的数据源和格式提供多种选项。它可以导入 CSV、JSON 或 XML 格式的文件或 URL 中的数据,以及直接从数据库加载数据(使用 JDBC)。当您调用这些过程时,可以传入数据源并使用其他过程来操作数据,或使用常规 Cypher 来插入或更新数据库。还有用于批量处理数据、添加等待/休眠命令以及处理大型数据集或不稳定数据源的过程。
此库中的转换过程几乎是无限的,允许开发人员处理动态标签或关系、纠正/跳过空值或空值、格式化日期或其他值、生成哈希以及处理其他棘手的数据场景。如果您需要一种灵活和自定义数据处理的方式,APOC
可能是一个不错的选择。在复杂场景下使用此库的缺点是,它可能需要大量的代码行来处理多个数据转换。
ETL 工具
Neo4j 的 ETL 工具提供了一个简单的图形用户界面(GUI),允许您将数据从几乎任何类型的关系型数据库加载到 Neo4j 实例。该过程需要您设置与几乎任何关系型数据库的 JDBC 连接,然后自动映射到以可视化形式呈现的图数据模型,您可以根据用例进行编辑。最后,您可以选择是在运行中的 Neo4j 实例上还是在关闭的 Neo4j 实例上进行加载,并导入数据。
该工具为从关系型数据库到 Neo4j 的初始导入提供了一个简单、直接且快速高效的过程。然而,目前它不提供处理增量加载或更新现有数据的能力。它是一个社区驱动的工具,因此更新是按需进行的,而不是按计划时间表进行的。
ETL 工具资源
-
开发者指南:Neo4j ETL 工具
-
博客文章:将关系型数据转换为图谱
-
源代码:Github 项目
Apache Hop
Apache Hop 是 Hop Orchestration Platform 的缩写,是一个数据编排和数据工程平台。它旨在促进数据流的创建和管理。
来自 Neo4j Apache Hop 项目的源代码已集成到 Apache Hop 框架中。最新版本也包含了 Neo4j 插件。
使用 Apache Hop,您可以在 Neo4j 中加载大型数据集、更新图谱并获取日志信息。
请注意,此工具是社区贡献的,不提供官方支持。 |