【问题标题】:Importing tables with multi-column foreign keys from RDBMS with ETL使用 ETL 从 RDBMS 导入具有多列外键的表
【发布时间】:2016-03-30 12:54:09
【问题描述】:

我正在尝试从 RDBMS (MySQL) 模式导入 OrientDB 数据库(版本 2.1.12)中的一些表。

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

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

对于这种关系,我在 orientDB 图中定义用于导入的 ETL 模块没有问题,因为我使用了如下定义的转换器:

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

使用 primaryid 属性作为连接字段,在演示和药物类之间正确创建边缘连接。

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: orientdb


    【解决方案1】:

    我正在尝试这个,它似乎有效:

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

    让我知道它是否也适合你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多