我有一个SQL Server数据库,其结构如下:
我希望将数据导入OrientDB:
我该怎么做?
答案 0 :(得分:0)
OrientDB Teleporter是一个将RDBMS与OrientDB数据库同步的工具。此功能适用于OrientDB Enterprise Edition和OrientDB Community Edition。但请注意:在社区版中,您可以迁移源关系数据库,但无法享受同步功能,仅在企业版中可用。
有关详细信息:https://orientdb.com/docs/last/Teleporter-Home.html
希望有所帮助
此致
答案 1 :(得分:0)
你的问题太简短了,我建议使用OETL
,我没有看过Teleporter,但我希望传送器可能更容易。
要使其工作,首先需要创建所有唯一顶点 - Person和Relation,然后执行此合并操作。 JSON看起来像下面这样,我根本没有测试过JSON,它可能无法正常工作 - 但它会给你一个想法。
{
"config":{
"log":"debug",
"parallel":false,
"haltOnError":false
},
"extractor":{
"jdbc":{
"driver":"com.mysql.jdbc.Driver",
"url":"jdbc:mysql://localhost/yourdb",
"userName":"user",
"userPassword":"pwd",
"query":"select distinct p.personId, r.relatedPersonId, r.relationId, concat(r.relatedPersonId, '__', r.relationId) as rel_person, r.relationName from Person p inner join Relation r on p.personId = r.personId"
}
},
"transformers":[
{
"merge":{
"joinFieldName":"personId",
"lookup":"SELECT expand(p) from (match {class: Person, as: p} return p)"
}
},
{
"edge":{
"class":"RELATIVE",
"direction":"out",
"joinFieldName":"rel_person",
"lookup":"SELECT expand(r) from (match {class: Relation, as: r} return r) where concat(r.relatedPersonId, '__', r.relationId) = ?",
"unresolvedLinkAction":"NOTHING",
"edgeFields":{
"relation":"${input.relationName}"
},
"skipDuplicates":true
}
},
{
"field":{
"fieldNames":[
"relationName"
],
"operation":"remove"
}
}
],
"loader":{
"orientdb":{
"dbURL":"remote:localhost/yourgraphdb",
"dbUser":"graph_user",
"dbPassword":"graph_pwd",
"dbType":"graph",
"dbAutoCreate":false,
"batchCommit":1000
}
}
}