多库关联
【问题】
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 表的结构和数据如下:
Employee 表的结构和数据如下:
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 脚本。