对数据库进行批量更新时,使用update函数要比execute函数性能更好。

比如,source和target是两个不同的数据源,callrecordA是source中的物理表,有1万条记录,callrecordB是target中的物理表,无记录,现在需要将callrecordA中的数据同步到callrecordB中。

当使用execute函数进行批量更新,可以发现性能不够理想,代码如下:

上述算法实际是循环执行insert语句,并没有充分利用JDBC的批量更新机制,因此性能较差。而且上述算法只是插入数据,如果既有插入又有修改,处理起来会麻烦许多。

使用update函数后,可以看到性能提升明显,代码如下:

函数update利用JDBC的executeBatch机制进行批量更新,因此性能较好。选项@i表示只需生成insert语句,@u表示只生成update语句。无选项时表示既有insert又有update,即目标表已有数据,需比对源表和目标表的主键,如果某主键在源表存在,在目标表不存在,则生成insert语句,如果某主键在源表和目标表都存在,则生成update语句。

数据库通常会提供同步/导入工具,这些工具通常具备更好的性能,也都支持命令行调用。SPL可执行命令行,因此可以调用这些工具。比如用oracle的sqlldr导入数据,可使用如下代码:

A1-A3:将source中的表导出成文本文件,分隔符为|。文本文件如果已存在,则可省略本步骤。

A4:执行命令行,调用sqlldr,命令格式要符合sqlldr的官方要求。注意callrecordB.ctl 是sqlldr要求的控制文件,格式如下:

load data

CHARACTERSET UTF8

append

into table callrecordB

fields terminated by '|'

trailing nullcols

(

SERIALNUMBER INTEGER EXTERNAL,

OUTID INTEGER EXTERNAL,

INID INTEGER EXTERNAL,

CALLTIME date "yyyy-mm-dd hh24:mi:ss",

DURATION INTEGER EXTERNAL,

CHARGE INTEGER EXTERNAL

)

SPL支持并行计算,包括并行执行同步/导入工具,所以可以将单文本拆成多个文本,同时导入多个文件,以此获得更高性能。不同的同步/导入工具,有不同的并行要求,通常的要求是不锁表,且无唯一索引。比如并行执行sqlldr,可用如下代码:

jdbc批量更新_用集算器更新数据库的技巧相关推荐

  1. oracle 批量更新_用集算器更新数据库的技巧

    对数据库进行批量更新时,使用update函数要比execute函数性能更好. 比如,source和target是两个不同的数据源,callrecordA是source中的物理表,有1万条记录,call ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. StyleSheet文件中路径处理
  2. Mach-O 二进制文件解析
  3. 给程序媛妹子的4个贴心建议
  4. 判断一个字符串大写小写,和数字出现的次数
  5. 线性代数、概率 入门书籍推荐
  6. linux档案权限655,Linux学习笔记之档案权限与目录配置
  7. 视频采集以及播放的流程
  8. Altium AD20将已有的原理图PCB导出为封装库
  9. 洛谷——P1909 [NOIP2016 普及组] 买铅笔
  10. 双Y轴echarts
  11. Java基础篇:算术赋值运算符
  12. 三层路由详解、为什么要划分vlan,vlan的作用是什么?
  13. 微信小程序识别html代码
  14. G-Dezender批量解密
  15. 联想 Y7000 安装 扩展 内存条
  16. 怎么查看电脑系统的初始安装日期
  17. 文件属性安全组误删恢复
  18. SpringBoot【基础篇】
  19. 中职专业课教师资格证计算机,中等职业教师资格证专业课有哪些
  20. 如果使用PostGIS的ST_Area函数计算多边形面积

热门文章

  1. X86 register
  2. C语言函数指针命令行参数
  3. 动态头像 Android 实现,Android仿京东金融首页头像效果
  4. **python基础类和对象(十二)
  5. assets和res/raw的用法
  6. 快速搭建dajango框架
  7. 计算机编程英语怎么写,计算机编程英语词汇大全.pdf
  8. [洪流学堂]Hololens开发高级篇1:凝视(Gaze)
  9. OpenShift 4 Hands-on Lab (10) 限制集群资源的使用量
  10. PyTorch 1.7 发布:支持 CUDA 11、FFT 新 API、及 Windows 分布式训练