异构数据库如何关联查询

例题描述和简单分析

MySQL中有数据表persons,如下:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Oracle中有数据表orders,如下:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

需要列出所有的人,以及他们的订单,与所有的订单和订购它们的人,结果如下:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George


34764

解法及简要说明

在集算器中编写脚本 p1.dfx,如下所示:


A
1 =connect("mysql")
2 =A1.query@x("select * from persons")
3 =connect("oralce")
4 =A3.query@x("select   * from orders")
5 =join@f(A2:persons,id_p;A4:orders,id_p).new(persons.lastname,persons.firstname,orders.orderno)

简要说明:

A1  连接 MySQL 数据库

A2  获取 persons 表的数据

A3  连接 Oracle 数据库

A4  获取 orders 表的数据

A5  A2与 A4 的数据按 id_p 全连接,列出需要的数据,即结果

JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》

问答搜集

https://stackoverflow.com/questions/50597874/is-it-possible-to-write-cross-database-join-queries