【问题】
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 脚本。
本文介绍了如何在MySQL和db2之间进行多库关联计算。传统方式较为复杂,但通过使用集算器SPL,可以轻松实现不同Server上数据库之间的关联。示例中展示了如何根据sellerid和eid关联sales与employee表,过滤出state为'California'的数据。
686

被折叠的 条评论
为什么被折叠?



