使用ETL从RDBMS导入包含多列外键的表

时间:2016-03-30 12:54:09

标签: orientdb

我试图在OrientDB数据库(版本2.1.12)中导入RDBMS(MySQL)架构中的一些表。

例如在MySQL模式中,我有一个名为drug的表,其中一个外键链接到另一个名为demo的表的属性,定义如下:

primaryid bigint references demo(PRIMARYID) on update cascade on delete cascade

对于这种关系,我可以定义ETL模块在orientDB图中导入,因为我使用了一个定义如下的trasformer:

"transformers": [
    { "vertex": { "class": "drug" } },
    { "edge": { "class": "drugDemo",
                "joinFieldName": "primaryid",
                "lookup": "demo.primaryid",
                "direction": "in"
            }
        }
  ],

使用primaryid属性作为连接字段,在demo和drug类之间正确创建边连接。

但我还有一个名为indi的表,其中多列外键定义如下:

foreign key (PRIMARYID, INDI_DRUG_SEQ) references drug(PRIMARYID, DRUG_SEQ)

在这种情况下,如何在ETL模块中定义正确将表格导入图形的边缘转换器?

从orientDB文档中我找不到多列外键的解决方案。我认为可能的解决方案是使用分隔符将新属性定义为PRIMARYID和INDI_DRUG_SEQ属性字符串的串联,但我不确定它是否是一个好的解决方案。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我正在尝试这个并且似乎有效:

"transformers": [
{ "vertex": { "class": "indi" } },
{ "edge": { "class": "indiDemo",
            "joinFieldName": "primaryID",
            "lookup": "demo.primaryID",
            "joinFieldName": "indi_drug_seq",
            "lookup": "demo.drug_seq",
            "direction": "in"
        }
}
 ],

让我知道它是否适合你。