OrientDB:使用“子选择”创建边
我在一个MySQL表(id,parentId)中有一个简单的树结构,有大约300万个顶点,我想将其导入OrientDB图形数据库。ETL导入器平滑导入顶点,但无法创建边(NullPointerException)。ETL甚至不适用于文档中给定示例的普通数据库(抛出相同的异常),因此我只导入了顶点,并希望手动创建边 我有一个顶点类(地址)和两个属性(id,parentId),我想在这些顶点之间创建边(parentId->id)。有没有一种简单的方法来代替在循环中插入边?类似于SQL中的OrientDB:使用“子选择”创建边,orientdb,Orientdb,我在一个MySQL表(id,parentId)中有一个简单的树结构,有大约300万个顶点,我想将其导入OrientDB图形数据库。ETL导入器平滑导入顶点,但无法创建边(NullPointerException)。ETL甚至不适用于文档中给定示例的普通数据库(抛出相同的异常),因此我只导入了顶点,并希望手动创建边 我有一个顶点类(地址)和两个属性(id,parentId),我想在这些顶点之间创建边(parentId->id)。有没有一种简单的方法来代替在循环中插入边?类似于SQL中的 INSER
INSERT INTO E (out, in) VALUES (SELECT parentId, id FROM Address)
由于只应使用CREATE EDGE创建边,我想OrientDB默认情况下不支持这样的操作。但也许有一个解决办法来创建这300万条边
我发现在两个记录之间创建链接很容易:
CREATE LINK parentLink TYPE LINK FROM Address.parentId TO Address.Id
但是,我无法以这种方式创建边。我试着处理变量
CREATE EDGE isParentOf FROM (SELECT FROM Address) TO (SELECT FROM Address WHERE id = $current.parentId)
但这不起作用。您是否尝试过此ETL Json:
{
"config": {"log": "debug", "parallel": true },
"extractor" : {
"jdbc": { "driver": "oracle.jdbc.driver.OracleDriver",
"url": "jdbc:oracle:thin:hostname/db",
"userName": "username",
"userPassword": "password",
"query": "select id, A.parentId from Address a where rownum<2" }
},
"transformers": [`enter code here`
{ "vertex": { "class": "Address" }},
{ "edge": { "class": "isParentOf",
"joinFieldName": "parentId",
"lookup": "Address.Id",
"direction": "in",
"skipDuplicates":true
}
}
],
"loader": {
"orientdb": {
"dbURL": "remote:server/db",
"dbUser": "user",
"dbPassword": "passwd!",
"dbType": "graph",
"classes": [
{"name": "Address", "extends": "V"},
{"name": "isParentOf", "extends": "E"}
], "indexes": [
{"class":"Address", "fields":["ID:string"], "type":"UNIQUE" }
]
}
}
}
{
“config”:{“log”:“debug”,“parallel”:true},
“提取器”:{
“jdbc”:{“driver”:“oracle.jdbc.driver.OracleDriver”,
“url”:“jdbc:oracle:thin:hostname/db”,
“用户名”:“用户名”,
“用户密码”:“密码”,
“查询”:“从地址A中选择id,A.parentId,其中rownum您是否尝试过此ETL Json:
{
"config": {"log": "debug", "parallel": true },
"extractor" : {
"jdbc": { "driver": "oracle.jdbc.driver.OracleDriver",
"url": "jdbc:oracle:thin:hostname/db",
"userName": "username",
"userPassword": "password",
"query": "select id, A.parentId from Address a where rownum<2" }
},
"transformers": [`enter code here`
{ "vertex": { "class": "Address" }},
{ "edge": { "class": "isParentOf",
"joinFieldName": "parentId",
"lookup": "Address.Id",
"direction": "in",
"skipDuplicates":true
}
}
],
"loader": {
"orientdb": {
"dbURL": "remote:server/db",
"dbUser": "user",
"dbPassword": "passwd!",
"dbType": "graph",
"classes": [
{"name": "Address", "extends": "V"},
{"name": "isParentOf", "extends": "E"}
], "indexes": [
{"class":"Address", "fields":["ID:string"], "type":"UNIQUE" }
]
}
}
}
{
“config”:{“log”:“debug”,“parallel”:true},
“提取器”:{
“jdbc”:{“driver”:“oracle.jdbc.driver.OracleDriver”,
“url”:“jdbc:oracle:thin:hostname/db”,
“用户名”:“用户名”,
“用户密码”:“密码”,
“查询”:从地址A中选择id,A.parentId,其中rownumDid您已经在ETL项目上创建了问题?您使用的是哪个版本?否,我将在下周在ETL项目上创建问题。我使用的是orient db community edition 2.1Did您已经在ETL项目上创建了问题?您使用的是哪个版本?否,我将在ETL项目上创建问题下周。我将使用orient db community edition 2.1请检查您的答案并修复您包含的已损坏的JSON。请检查您的答案并修复您包含的已损坏的JSON。