多库关联

【问题】
Can I relate 2 tables from different relational databases (In mysql db)?

【回答】
MySQL 配置多库关联运算比较麻烦。用集算器很容易实现,可以使用 SPL 实现两个数据库之间的关联计算,并且数据库可以位于不同的 Server 上。

简单通过例子来看一下具体作法:

要将 db2 中的 sales 表和 mysql 数据库中的 employee 表通过 sale.sellerid 和 employee.eid 关联,过滤出 state=”California”的所有 sales 和 employee 数据(此例虽然是 db2 和 mysql,其他数据库的写法也是类似的)。

Sales 表的结构和数据如下:
1png

Employee 表的结构和数据如下:

2png

esProc 代码如下:



A

1

=db2.query("select * from Sales")

2

=mysql.query("select * from Employee")

3

=join(A1,SELLERID;A2,EID)

4

=A3.select(#2.STATE=="California")

5

=A4.new(#1.ORDERID, #1.CLIENT, #2.NAME:SELLERNAME, #1.AMOUNT, #1.ORDERDATE)

6

return A5

A1、A2:分别从 db2 和 mysql 中读取 sales 表和 employee 表,db2 和 mysql 是预先配置好的数据源。

    A3:使用 SPL 的对象引用机制,将 sales 表和 employee 表通过 sellerid=eid 关联。

    A4:过滤出 state="California" 的记录。

    A5:生成一个新的序表,得到需要的字段。

    A6:返回给集算器程序的调用者。

脚本写好后,在其他应用程序中,就可以利用集算器 JDBC 调用该数据集了。可参考Java 如何调用 SPL 脚本