joh*_*wie 5 database import converter neo4j graph-databases
我正在考虑用neo4j数据库替换MySQL数据库.我是neo4j的初学者,想知道如何将当前MySQL数据批量插入到neo4j数据库中,这样我就可以进行实验并开始学习neo4j.
关系数据库包括4个表:Person,Organism,Story,Links.链接描述其他3个表中的行之间的关系.
Links:ID,FromTable,FromID,ToTable,ToID,LinkType
Person:ID,property_2,property_1等...
Organism:ID,property_A,property_B等....
Story:ID,property_x,property_y
每个ID字段是一个自动递增的整数,从每个表的1开始
如果不明显,ID为3的人和ID为42的故事之间的链接将在Links表ID = autoincrement,FromTable = Person,FromID = 3,ToTable = Story,ToID = 42中有一行.即使我使用"来自"和"来"这些术语,实际的链接并不是真正的"指导".
我看过Michael Hunger的批量导入,但这似乎只适用于单个节点表和一个关系表,而我希望导入三种不同类型的节点和一个关系列表.
我有neo4j启动和运行,任何建议让我开始将非常感激.
我不熟悉Java,虽然我使用Python和bash shell脚本.初始导入后,我将使用带有Javascript的RESTful接口.
根据git repo中的建议.使用Michael Hunger的批量导入,可以从一个.csv文件导入多个节点类型.引用迈克尔:
只需将它们全部放入一个节点文件中,就可以使任何属性在某一行中没有值,然后就可以跳过它.
所以我使用的一般方法是:
将所有节点表组合成一个名为的新表nodes:
nodes使用自动递增newID字段和type字段创建新表.type字段将记录节点数据来自哪个表INSERT INTO nodes从价值观Person,那么Organism,那么Story,除了设置type场人,生物,或故事.将任何不相关的字段留空.在另一个新表中,基于sql rels将新创建的newID索引添加到Links表中JOIN:
INSERT INTO rels
SELECT
n1.newID AS fromNodeID,
n2.newID AS toNodeID,
L.LinkType,
L.ID
FROM
Links L
LEFT JOIN
nodes n1
ON
L.fromID = n1.ID
AND
L.fromType = n1.type
LEFT JOIN
nodes n2
ON
L.toID = n2.ID
AND
L.toType = n2.type;
Run Code Online (Sandbox Code Playgroud)
然后导出这两个新表nodes和relsTab分离的.csv文件,并将它们与批量导入一起使用:
$java -server -Xmx4G -jar target/batch-import-jar-with-dependencies.jar target/graph.db nodes.csv rels.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4234 次 |
| 最近记录: |