最近在做数据批量导入工作,就发现用sql的select&insert方式装载大量数据效率太低,对不同的数据库其实有不同的批量导入的优化工具,比如:

1.bcp

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据

2.bulk

  • 2.1、bulk相当于数据库里的bash操作。
  • 2.2、引入批量操作bulk,提高工作效率,你想啊,一批一批添加与一条一条添加,谁快?
  • 2.3、bulk API可以帮助我们同时执行多个请求
  • 2.4、bulk一次最大处理多少数据量?
      bulk会把将要处理的数据载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。
      一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(即$ES_HOME下的config下的elasticsearch.yml)中
    ~~~~~~

另外,关于数据的增量加载:

1.oracle cdc(changed data capture)

支持自动记录数据变化日志,可以通过比对日志进行增量加载,变化的数据会保存在db的变化表中

2.时间戳

3.md5全表扫描

4.触发器

触发器增量抽取原理:
在源数据表上建立触发器(ex可以建立插入,修改和生产三个触发器),每当源表数据变化,通过相应触发器将变化的数据写入临时表。抽取线程从临时表抽取数据。抽取过的数据被标记或者删除。优点:数据抽取性能较好;缺点:对业务建立出发器,对业务系统有影响