异构数据库如何关联查询

例题描述和简单分析

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