Java的数据计算类库RowSet提供了JoinRowSet和FilteredRowSet类,可以进行跨库的关联计算,但是有很多局限。首先,JoinRowSet只支持inner

join,不支持outter join。其次,db2、mysql和hsql经过测试是可以使用JoinRowSet的,但是oracle

11g和其他数据库关联的的时候虽然不报错,但是结果集为空。而oracle11g的两个数据库用户跨库做join,使用JoinRowSet可以得到正确的结果。所以说不同数据库厂家提供的Jdbc实现可能会影响上述方法的结果。第三,就是编程还是有点复杂。

集算器esProc能很好配合java完成跨库连接。集算器支持各种数据库,包括:oracle、db2、mysql、sqlserver、sybase、postgresql等,均可完成多数据混合的inner

join和outter

join等各种跨库关联运算。下面我们通过例子来看一下具体作法:要将db2中的sales表和mysql数据库中的employee表通过sale.sellerid和employee.eid关联,过滤出state=”California”的所有sales和employee数据。例子虽然是db2和mysql,其他数据库的写法也是类似的。

Sales表的结构和数据如下:

Employee表的结构和数据如下:

实现的思路是:用Java程序调用集算器脚本,连接多个数据库实现关联和过滤计算后将结果以ResultSet的方式返回给Java程序。

esProc代码如下:

A1:连接预先配置好的db2数据源。

A2:连接预先配置好的mysql数据源。实际上对于oracle等其他数据库也同样支持。

A3、A4:分别从db2和mysql中读取sales序表和employee序表。esProc的集成开发环境可以直观的显示出导入的数据,如上图右边部分。

A5:使用集算器的对象引用机制,将sales序表和employee序表通过sellerid=eid关联。

A6:按照state="California"过滤序表。

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

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

在Java程序中使用esProc

JDBC调用这段程序获得结果的代码如下:(将上述esProc程序保存为test.dfx):

//建立esProcjdbc连接

Class.forName("com.esproc.jdbc.InternalDriver");

con=

DriverManager.getConnection("jdbc:esproc:local://");

//调用esProc程序(存储过程),其中test是dfx的文件名

com.esproc.jdbc.InternalCStatement st;

st

=(com.esproc.jdbc.InternalCStatement)con.prepareCall("call

test()");

//执行esProc存储过程

st.execute();

//获取结果集

ResultSet set = st.getResultSet();

java跨库join方案_集算器协助java处理多样性数据源之跨库关联相关推荐

  1. 集算器协助Java处理结构化文本之条件过滤

    直接用Java实现文本文件中数据按条件过滤会有如下的麻烦: 1.文件不是数据库,不能用SQL访问.当过滤条件变化时需要改写代码.如果要实现象SQL那样灵活的条件过滤,则需要自己实现动态表达式解析和求值 ...

  2. 集算器协助SQL实现非等值分组

    SQL通常只能按源表字段进行分组,如果分组依据来自另一张表.外部参数.条件列表,用SQL就很繁琐.有时分组依据需要动态生成,这些往往要借助高级语言实现.有时分组依据和源表不完全对应(或区间没有交集), ...

  3. cookie追加数据_集算器 SPL 抓取网页数据

    [摘要] 集算器 SPL 支持抓取网页数据,根据抓取定义规则,可将网页数据下载到在本地进行统计分析.具体定义规则要求.使用详细情况,请前往乾学院:集算器 SPL 抓取网页数据! 网站上的数据源是我们进 ...

  4. 集算器协助MongoDB计算之交叉汇总

    MongoDB实现交叉汇总比较困难,如果将数据取出,用Java等高级语言来汇总的话,也相当复杂.因此,可以考虑用集算器esProc辅助MongoDB完成交叉汇总.下面我们通过一个例子来看一下具体做法. ...

  5. java漏斗代码_集算示例:10 行代码解决漏斗转换计算

    销售过程是一个多环节的过程,哪个步骤有了过大瑕疵,都会导致业绩急剧下滑.而诊断出哪个步骤有瑕疵,除了无形的经验,还有量化的诊断方式,就是今天要讨论的主角:转化漏斗模型. 示例数据 为了详细讨论这个漏斗 ...

  6. 集算器并行处理大文本文件的示例

    集算器可以方便地用并行方式处理大文本文件,下面通过一个例子来说明使用方法. 假设有个一千万条销售记录的文本文件sales.txt,其主要字段是SellerID(销售员).OrderDate(订单日期) ...

  7. 集算器入门之安装与基本使用

    集算器是一款程序化数据运算工具,它能够执行各类数据分析与结构化计算,也可以自由访问数据库,完成在线数据分析. 1.集算器的安装 在下面的官方网站可以下载集算器的安装包: http://www.raqs ...

  8. 润乾集算器与帆软报表集成 (直接通过 jdbc,类 DB 存储过程方式调用)

    集算器概述 集算器作为一种大数据计算工具,不仅在润乾产品体系中能发挥它的巨大作用,在其他绝大部分数据处理.数据计算领域的项目.产品中,也都有他助力计算的身影.比如传统的报表工具,报表项目中,80% 的 ...

  9. oracle测试报告模板,Oracle与集算器对照测试报告

    1.测试目的 针对相同的硬件环境和计算任务,对比Oracle和集算器的性能差异,为客户选型提供参考. 2.硬件环境 设备数量:1台 CPU:16核Intel(R) Xeon(R) CPU E5620  ...

最新文章

  1. Android程序员的技术要求和学习路线
  2. Ganglia 应用实践
  3. 【操作】vue-markdown使用
  4. go学习笔记-标准库
  5. vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点
  6. masked_fill【将mask中值为True的位置对应的待填充的张量设置为value值】
  7. 售前工程师的成长---一个老员工的经验之谈(5)
  8. 送你两个神器,关系数据库数据入湖轻松应对
  9. java http soap_在Spring中发布SOAP HTTP Webservice - Java杂家 - Blo...
  10. Linux下安装配置PHP环境(下)---PHP
  11. android 广播的权限,Android Broadcast 和 BroadcastReceiver的权限限制方式
  12. memcache的安装,配置和使用
  13. matlab 积分函数曲线,matlab数值积分函数
  14. 用数据分析的手段,看2019年CSDN博客之星总评选
  15. i79750h和i511400h哪个好
  16. Backtrader量化平台教程(三)Indicator
  17. VVC快速仿射运动补偿
  18. 在Win32程序中创建OpenGL渲染环境
  19. mcnpf5输出结果_MCNP学习笔记-计数卡F6
  20. 最新版CATIA,让您快速创造完整高级机械项目

热门文章

  1. 波司登,除了羽绒服还是羽绒服
  2. 迎来“进化”风口的电竞,能否在未来站上传统体育的肩膀?
  3. 新东方财报背后:增收不增利之下,“下沉”“上线”能有坦途?
  4. cmd ibm服务器型号,ibm gpfs
  5. [JDBC] 获取数据库连接方式
  6. thinkphp scws mysql_thinkphp buildHtml 函数实现网站静态化
  7. 12道Python基础字符编码数据类型练习题
  8. Python3NumPy的常用函数
  9. Python 下JSON的两种编解码方式实例解析
  10. js ajax上传文件到服务器,使用ajax上传并预览图片后传到服务器上