neo4j etl工具快速上手:简化从关系数据库到图数据库的数据迁移 - neo4j 图数据库中文社区


本站和网页 http://neo4j.com.cn/topic/5b303cf38949e94d3bfeed22 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Neo4j ETL工具快速上手:简化从关系数据库到图数据库的数据迁移 - Neo4j 图数据库中文社区
首页 新手入门 API --> Neo4j中文手册 Cypher 中文文档 关于 注册 登录 作者 graphway 积分: 1460 “
这家伙很懒,什么个性签名都没有留下。
作者其它话题
Neo4j Bloom最新版发布:支持多数据库、并且免费试用
展望未来十年、图将改变世界 (Graphs In 2020 ~ 2030 )
Neo4j技术人员聚会 Meetup 下个月25日在上海举办,欢迎报名!
Neo4j技术人员聚会 Meetup 下个月18日在北京举办,欢迎报名!
Graphs4Good: 使用Neo4j Bloom实现传染病病毒案例的接触史追踪
无人回复的话题
Neo4j 插件APOC使用 后台任务和触发器
在Neo4j community 5.x+Neo4j Open GDS 2.5上开发扩展算法插件。
使用java编写自定义函数 拓展Neo4j功能
NEO4J空间索引
Neo4j有哪些版本
精华
Neo4j ETL工具快速上手:简化从关系数据库到图数据库的数据迁移
发布于 6 年前
17798 次浏览
最后一次编辑是 5 年前
来自 分享
注:本文系从https://medium.com/neo4j/tap-into-hidden-connections-translating-your-relational-data-to-graph-d3a2591d4026翻译整理而来。
本文介绍新近推出的Neo4j ETL App,包括其安装、使用和功能特性。大纲如下:
Neo4j ETL工具
添加Neo4j ETL应用程序
选择项目
检索RDBMS元数据
Mapping.json中的数据
调整映射
导入数据
检查导入的数据
总结
Neo4j ETL(Extract-Transform-Load)工具的构建使开发人员能够轻松地将关系数据加载到图数据库中。它包括3个简单的步骤来实现:
通过JDBC设置指定源关系数据库;
使用图形化的编辑工具建立数据模型映射;
运行生成的脚本将所有数据导入到Neo4j。
该工具很容易访问和使用。有两种方式与工具交互:
通过命令行,
通过Neo4j Desktop应用程序。
为了使用命令行,在GitHub上下载项目,并按照文档说明运行每个步骤:
https://github.com/neo4j-contrib/neo4j-etl
本文将主要介绍如何在Neo4j Desktop中使用ETL工具。
要在Neo4j Desktop中添加ETL,首先需要
联系Neo4j
以获取激活密钥,并添加到配置文件中。下面的屏幕截图显示了如何在Neo4j Desktop中添加激活密钥。
完成后,即可以访问ETL应用程序。现在,我们需要将它添加到图形应用程序中。
首先,进入Neo4j Desktop中的Projects菜单,选择/创建一个项目。然后,点击右侧菜单窗格第一个横幅下的“添加应用程序”。当弹出窗口显示可添加的应用程序时,通过单击“添加”按钮选择ETL应用程序。如下图所示:
好,一切就绪了!现在,点击ETL App图标,就可以运行这个工具了。
Neo4j ETL App采用类似执行向导的方式,让ETL设计和运行的每一步都直观、简洁。第一步,是选择一个要运行ETL的项目。这将在应用程序的主屏幕上打开一个新窗口,如下所示。选择要在其中工作的项目,这将告诉应用程序Neo4j数据库的位置。
设置RDBMS连接
接下来,我们需要建立一个关系数据库连接。该工具允许使用支持JDBC驱动程序的大多数类型的关系数据库,包括MySQL,PostgreSQL,Oracle,Cassandra,DB2,SQL Server,Derby等。虽然MySQL和PostgreSQL数据库内置于该工具中,但通过指定
驱动程序文件
可以轻松设置所有其他数据库。
在这个例子中,我将使用加载了Northwind数据集的PostgreSQL关系数据库。如果需要安装此示例数据库和数据集,那么可以下载PostgreSQL、并运行从GitHub上获得的为Northwind数据集提供的加载脚本。链接如下:
https://github.com/pthom/northwind_psql
要设置连接详细信息,首先单击左侧边栏(数据库)中的顶部图标,然后单击打开窗格中的
RDBMS
选项,这将在窗口右侧显示JDBC Connection界面。
首先从“类型”下拉字段中选择数据库类型,其他一些字段将自动填充。在这个例子中,选择
postgresql
选项。这里,使用默认端口和连接URL就可以了。
现在我们可以根据需要填写其他细节。在“连接名称”字段中输入任何你喜欢的名称。需要注意的是“数据库”字段必须与关系数据库中实际的名称相匹配。如果使用Postgres或MySQL以外的其他数据库,请确保选择相应的连接驱动程序。
注意:如果为关系数据库设置了用户名和密码,则必须在相应的字段中输入这些用户名和密码。但是,如果没有为关系数据库指定用户名和/或密码,则可以将其中一个或两个字段留空。
完成所有细节填写后,单击窗格底部的“ 测试并保存连接 ”按钮,这时应该会在顶部看到一个蓝色的消息栏,表示连接已成功保存。如果其中一个字段不正确或无法找到关系数据库,则会出现一条带有错误消息的红色条。
好的,现在我们已经建立了关系数据库连接。接下来,选择左侧边栏中的第二个图标(导入),然后在打开的窗格中单击“导入数据”选项。这会在窗口右侧显示“检查元数据”面板。
要从关系图映射到图,我们从顶部列表中选择已加载的关系数据库连接,然后选择在底部列表中选择要写入的图形数据库。选中的数据库信息会出现在窗口右侧的FROM和TO文本中。完成后点击
Start Mapping
按钮。
输出会在窗口的底部显示。其中包括一些JSON文件。这是mapping.json基于源关系数据库的模式创建的文件。这是ETL过程的执行逻辑定义,因为如果决定在迁移中忽略特定的表或字段,则可以对此文件进行更改。
要查看该文件,打开Neo4j桌面窗口,转至当前项目,然后找到目标Neo4j数据库上,点击下面的“Manage”按钮。在本例中,它的名称为ETL_db。在打开i的面板上面点击“打开文件夹”按钮。
这里,应该可以看到一个postgresql_northwind_mapping.json文件(或类似命名的文件)。如果在进行下一步之前想做出任何更改,可以直接打开并编辑。这里,我我们对mapping.json不做任何修改、直接进入下一步。
回到ETL应用程序窗口,单击右下角的“ 下一步 ”按钮,打开数据建模屏幕。可以移动屏幕右侧图表中的节点和关系,以便更好地查看它们中的每一个。
在这里,可以更改节点名称、关系、甚至属性(字段)名称和数据类型。例如,可以选择更适合的关系类型,将它们从通用名词更改为更具体的动词。本例中,将员工节点之间的关系从“ EMPLOYEES”改为“ REPORTS_TO”,因为员工可以向另一个员工(即经理)报告。
Neo4j ETL App会根据源数据库模式决定基本的数据映射,规则如下:
a. 拥有1个外键的表会映射成节点和其上的关系;
b. 拥有2个外键的表会被当做是关系表,映射成关系;
c. 拥有多于2个外键的表会被当作中间表处理,映射成拥有多个关系的节点。
数据导入
一旦对建立的映射足够满意了,可以点击右下角的“ 下一步”按钮。这将打开最后一步的屏幕,即选择导入方式。有四个选项可以使用:
Neo4j import命令行工具 - 适用大型数据集的快速、初始、批量导入,数据库必须脱机且本地运行,已有数据将被覆盖。
Neo4j Shell  - 基于Cypher的大型数据集导入,数据库必须脱机且本地运行。
Cypher Shell  - 创建并运行可编辑的Cypher脚本,数据库需要联机。
直接Cypher导入  - 创建可以编辑的Cypher脚本,数据库需要联机,在客户端通过Bolt协议连接数据库并导入数据。
所以,采用何种导入方法的关键是,Neo4j数据库是否正在运行/联机,以及是否要将数据添加到现有的图数据库中。
Neo4j Import 比Cypher导入要快得多,因为它使用底层数据库文件直接、批量导入程序来初始创建数据库。但是,如果无法关闭并更换数据库,那么Cypher导入选项是更加可行的方案。
最后,单击“导入数据 ”按钮,屏幕底部的输出会显示后台命令执行的状态。完成后,窗口顶部会出现蓝色的消息栏,表示导入已成功。
要验证加载的所有内容并开始使用Neo4j中的数据,我们可以查看数据模型并从Neo4j浏览器或连接到数据库的应用程序运行查询。
在这个例子中,我们回到Neo4j桌面窗口,进入到ETL_db数据库,然后点击’ 打开浏览器 `。在浏览器命令行上执行CALL db.schema()会你显示图形数据模型。
请注意,该模型不包含连接到Customer节点的Customer Demographics节点。这是因为所使用的Postgres数据集在客户人口统计学csv文件中没有任何数据。
接下来,你可以充分运用你的Cypher技能对数据库中的数据进行查询、更新和分析,在连接的数据集中收集价值和发现新的内在价值。下面的屏幕截图显示了关于客户、托运人、订单和产品的查询结果。
ETL工具的使用将大大简化从关系数据库到图数据库进行数据迁移的开发和运行。目前,ETL App还处于早期版本,许多重要的ETL特性,例如对更加复杂的映射规则的支持、并行数据导出/导入的执行等都尚未实现。因此,现阶段更加适合于作为一个建模/开发工具,简化数据映射的过程、生成可客户化的ETL脚本。
对于复杂的项目,可以参考Pentaho 的Kettle ETL工具。
如需了解更多,或者希望试用ETL App,请发姓名和工作邮箱到:joshua.yu@neo4j.com。
64 回复
hanzeyao
1楼•6 年前
ETL APP是免费的吗
2楼•6 年前
目前是。需要的话请发姓名和工作邮件给我,我回复激活码。谢谢!
atlantis
3楼•6 年前
@graphway
老师我需要一个激活码,请问您的邮箱是?我发邮件给你
feng1990liu
4楼•6 年前
有没有从hive导入neo4j的工具?
5楼•6 年前
@feng1990liu
你们是本地hive还是阿里云的odps?
6楼•6 年前
@atlantis
hive服务器是腾讯云,与阿里云应该差不多
7楼•6 年前
那咱俩的需求应该差不多,我们是阿里云hive
8楼•6 年前
hive有JDBC驱动,所以也是可以的。
zhizh
9楼•6 年前
xxs0922
10楼•6 年前
最近一直在研究Neo4j,看到了这篇文章,需要一个激活码,请问您邮箱是?
syx199112
11楼•6 年前
您好,在尝试连接Oracle数据库时,报错内容:Connection failed. No suitable driver for the connection,请问这个是需要自己安装Java JDBC吗?
12楼•6 年前
mountain
13楼•6 年前
:老师,请发一个ETL APP的激活码给我:王峰
mountain.wang@outlook.com
looper
14楼•6 年前
请问一下大神, neo4j-etl的工具是不是不开源的?我在neo4j-etl github 上没有找到源码。
wair56
15楼•6 年前
:老师,请发一个ETL APP的激活码给我:fcy@kuaihuoyun.com
chenghm
16楼•6 年前
:你好,请发一个ETL APP的激活码给我hmcheng@qq.com,谢谢
tomisacat
17楼•6 年前
老师您好,我是您腾讯课堂学院,麻烦您能否发一个ETL app 激活码 给我
29257771@qq.com
谢谢
dahong
18楼•6 年前
你好,请发一个ETL APP的激活码给我329391@qq.com,谢谢;
xforce
19楼•6 年前
老师您好,我是alex,能否发一份激活码给到64748319@qq.com
dominic
20楼•6 年前
老师您好,我是dominic ,请问能否发一份激活码给我?这是我的邮箱first_eye@163.com
axibulifu
21楼•6 年前
老师,能麻烦你发个激活码到582080848@qq.com吗?
hzjNIU
22楼•6 年前
老师,能麻烦你发个激活码到765362434@qq.com吗?
23楼•6 年前
老师,能麻烦你发个ETL APP的激活码到765362434@qq.com吗?
ghostkit
24楼•6 年前
老师,能麻烦你发个激活码到marquisthunder@gmail.com上吗?
normanbeita
25楼•6 年前
老师,能麻烦你发个ETL的激活码到13001214245@163.com吗,我即将在课堂展示neo4j,希望有更多震撼的东西能和同学们分享!
kk56789999
26楼•6 年前
老师,能麻烦您发个激活码到754779987@qq.com上吗? 非常感谢
piter
27楼•6 年前
您好,老师,麻烦您发个激活码,邮箱:systemgc@126.com.衷心感谢。
xiaokun
28楼•5 年前
您好,老师,麻烦您发个激活码,邮箱:xiaokun1108@126.com.感谢。
xup8888
29楼•5 年前
老师,能麻烦你发个激活码到xup8888@163.com吗?
yanchangyou
30楼•5 年前
老师,麻烦您发个激活码,邮箱:yanchangyou@qq.com
shangkun15
31楼•5 年前
老师,麻烦您发个激活码,邮箱:1083933702@qq.com
786947270
32楼•5 年前
老是,麻烦您发哥激活码,邮箱:786947270@qq.com
justin
33楼•5 年前
你好,麻烦发一个激活码 邮箱:dmt312_2010@163.com
fish5241
34楼•5 年前
你好,麻烦发一个激活码 邮箱:fish-5241@163.com
tl_oni
35楼•5 年前
你好,麻烦发一个激活码 邮箱:674175742@qq.com
zhaozhdneo4j
36楼•5 年前
您好,麻烦发一个激活码,谢谢,邮箱:abert.zhao@zoom.us
akzll
37楼•5 年前
庞老师好,请发激活码试用,谢谢,邮箱:akzll@163.com
wangtuanjie
38楼•5 年前
庞老师好,请发激活码试用,谢谢,邮箱:772445469@qq.com
goodwater
39楼•5 年前
庞老师好,请发激活码试用,谢谢,邮箱:2590667609@qq.com
pangguoming
40楼•5 年前
@goodwater
@wangtuanjie
@akzll
这是Neo4j官方技术支持 俞方桦 老师,不是我(庞国明)
:)
cavalier
41楼•5 年前
老师您好,可以发一个激活码吗,谢谢。申豪杰,邮箱:2336502545@qq.com
zhuhaitom
42楼•5 年前
老师可以发一个激活码吗:15907569756@139.com
yinshuai
43楼•5 年前
老师,请问,用etl导入的数据,中文出现乱码,这个要怎么处理
NBullet
44楼•5 年前
老师您好,可以发一个激活码吗:nbullet@126.com
apache
45楼•5 年前
庞老师好,请发激活码试用,谢谢,邮箱:1362728057@139.com
yeliang
46楼•5 年前
请问:ETL tool 在 NEO4J server / browser 中如何安装激活?
anran
47楼•5 年前
老师您好,可以发一个激活码吗:zong65432@163.com
hahabula
48楼•5 年前
庞老师,目前正在使用Neo4j,帮忙发一个激活码,非常感谢。邮箱:849114618@163.com
alice_liu
49楼•5 年前
老师,我在第二步JDBC CONNECTION 中,使用的是mysql,但显示Could not create connection to database server. Attempted reconnect 3 times. Giving up.但mysql中已经建立了相关数据库,用户名密码也都是正确的,但仍然连接不上,实在是想不出是什么原因。十分希望老师给予指点。
zrrjdd
50楼•5 年前
老师好,可以发一个激活码吗:
jiadianduo@lowrisk.com.cn
retire2054
51楼•5 年前
老师好,刚开始学习Neo4j,能帮忙发一个激活码吗,非常感谢 邮箱
63406227@qq.com
feng_neo4j
52楼•5 年前
老师好,可以发一个激活码吗? 邮箱:1025251990@qq.com
john88zhan
53楼•5 年前
老师好,可以发一个激活码吗 非常感谢 邮箱
zhf361181840@163.com
change
54楼•5 年前
老师您好,能麻烦您发一个激活码吗??? 非常感谢 邮箱
924844511@qq.com
buywatermelon
55楼•5 年前
1505127742@qq.com
zhu202
56楼•5 年前
老师,您好,最近正在学习这个,麻烦您发一个激活码! 邮箱
787749492@qq.com
,非常感谢!
scott-duan71
57楼•4 年前
502867670@qq.com
maoliang
58楼•4 年前
老师,您好,在学习oracle导入到neo4j,麻烦您发一个激活码,
邮箱www.shixingyun.cn
@qq.com,非常感谢!
wudi92
59楼•4 年前
老师,您好。请问使用etl tool连接mysql 导入中文字段为乱码的情况应该如何解决那?mysql 数据库已设置为utf8
gongchaolang
60楼•4 年前
18758251854@139.com
penggd
61楼•4 年前
老师好,最近正在学习neo4j在服务器上部署,且能使用neo etl 工具,谢谢老师发个激活码,且能给neo4j etl在服务器上的使用方法教一下,邮箱:791518613@qq.com
62楼•4 年前
@wudi92
我发现用etl命令行导入中文乱码,用桌面工具不乱码,官网文档中没有关于encoding的参数
richard
63楼•4 年前
庞老师好,请发激活码试用,谢谢,邮箱:zhushao@nestciao.com
64楼•4 年前
@richard
这是俞方桦老师的帖子
回到顶部
RSS
源码地址
Neo4j 社区为国内最专业的 Neo4j 中文技术社区,致力于 Neo4j 的技术研究。
公安联网备案号:37070302000084