insert into FACT_WBCKTJB_TMP select * from FACT_WBCKTJB where (rq,zh)) in(select rq,zh from FACT_WBCKTJB group by rq,zh having count(*)>1);

--3.删除原表重复数据

delete from FACT_WBCKTJB where (rq,zh)) in(select rq,zh from FACT_WBCKTJB group by rq,zh having count(*)>1);

--4.导入去重后数据

INSERT INTO FACT_WBCKTJB SELECT RQ, ZH, XM, JGH, BZ, YE_YB, YE_MY, YJS, YRJ, NJS, NRJ FROM FACT_WBCKTJB_TMP GROUP BY RQ, ZH, XM, JGH, BZ, YE_YB, YE_MY, YJS, YRJ, NJS, NRJ;

实际操作时,第2步就过不去了,数据量太大,将第2步换成导入19日后全部数据。

insert into FACT_WBCKTJB_TMP select * from FACT_WBCKTJB where rq>='2017/06/19';

这边命令执行了一个小时,坑啊——,万幸没把数据库搞挂。

其实执行到四十分钟时候,数据就已经全部插到TMP表了。

select count(1) from FACT_WBCKTJB where rq='2017/07/02';

select count(1) from FACT_WBCKTJB_TMP where rq='2017/07/02';

上面两个条数在四十分钟的时候已经一致了。以为是事务日志的原因,关了事务日志。

db2 commit;

db2 alter table FACT_WBCKTJB activate not logged initially;

db2 commit;

重新执行又是一个小时,没用。临时表还hang住了,drop不掉,查询没数据。8.2没有db2top,用db2pd找到对应的application,然后force掉。

db2pd -db bankdm -locks -transactions -applications -dynamic;

db2 force application 11111;

db2 drop table FACT_WBCKTJB_TMP;

换成用游标的方式把数据导出,为了避免前面步骤的第3步delete操作再卡住,直接把全部数据导出来,最终执行的步骤如下。

--1.创建临时表

19日以前的正确数据

create table FACT_WBCKTJB_18 like FACT_WBCKTJB;

19日以后的重复数据

create table FACT_WBCKTJB_19 like FACT_WBCKTJB;

--2.将数据以6月19日为界,导入两个临时表

db2 connect to bankdm ;

db2 "declare C1 cursor for SELECT * FROM DB2INST1.FACT_WBCKTJB where rq

db2 "LOAD FROM C1 of cursor insert INTO DB2INST1.FACT_WBCKTJB_18 NONRECOVERABLE" >>./load.log

db2 "declare C2 cursor for SELECT * FROM DB2INST1.FACT_WBCKTJB where rq

>='2017/06/19' with ur ";

db2 "LOAD FROM C2 of cursor insert INTO DB2INST1.FACT_WBCKTJB_19 NONRECOVERABLE" >>./load.log

db2 connect reset;

--3.将19日之后的数据去重后导入原表

db2 connect to bankdm ;

db2 "declare C1 cursor for SELECT RQ, ZH, XM, JGH, BZ, YE_YB, YE_MY, YJS, YRJ, NJS, NRJ FROM DB2INST1.FACT_WBCKTJB_19 where rq>='2017/06/19' and rq

db2 "LOAD FROM C1 of cursor insert INTO DB2INST1.FACT_WBCKTJB NONRECOVERABLE" >>./load.log

db2 "declare C2 cursor for SELECT RQ, ZH, XM, JGH, BZ, YE_YB, YE_MY, YJS, YRJ, NJS, NRJ FROM DB2INST1.FACT_WBCKTJB_19 where rq>='2017/06/24' and rq

db2 "LOAD FROM C2 of cursor insert INTO DB2INST1.FACT_WBCKTJB NONRECOVERABLE" >>./load.log

db2 "declare C3 cursor for SELECT RQ, ZH, XM, JGH, BZ, YE_YB, YE_MY, YJS, YRJ, NJS, NRJ FROM DB2INST1.FACT_WBCKTJB_19 where rq>='2017/06/29' GROUP BY RQ, ZH, XM, JGH, BZ, YE_YB, YE_MY, YJS, YRJ, NJS, NRJ with ur ";

db2 "LOAD FROM C3 of cursor insert INTO DB2INST1.FACT_WBCKTJB NONRECOVERABLE" >>./load.log

db2 connect reset;

上面的语句放shell里执行了,按日期分了三个批次,执行的时候仅仅用了三四分钟,可能不分批也没事。

--4.导入19日以前的数据

db2 connect to bankdm ;

db2 "declare C1 cursor for SELECT * FROM DB2INST1.FACT_WBCKTJB_18 with ur ";

db2 "LOAD FROM C1 of cursor insert INTO DB2INST1.FACT_WBCKTJB NONRECOVERABLE" >>./load.log

--5.清理临时表,直接贴执行过程。

$ touch 1.del;

$ db2 connect to bankdm

Database Connection Information

Database server = DB2/AIX64 8.2.0

SQL authorization ID = ODS

Local database alias = BANKDM

$ db2 "load from 1.del of del replace into db2inst1.FACT_WBCKTJB_19 nonrecoverable"

SQL3109N The utility is beginning to load data from file "/ods/1.del".

SQL2036N The path for the file or device "/ods/1.del" is not valid.

SQL3107W There is at least one warning message in the message file.

Number of rows read = 0

Number of rows skipped = 0

Number of rows loaded = 0

Number of rows rejected = 0

Number of rows deleted = 0

Number of rows committed = 0

$ db2 drop table db2inst1.FACT_WBCKTJB_18

$ db2 "load from 1.del of del replace into db2inst1.FACT_WBCKTJB_19 nonrecoverable"

SQL3109N The utility is beginning to load data from file "/ods/1.del".

SQL2036N The path for the file or device "/ods/1.del" is not valid.

SQL3107W There is at least one warning message in the message file.

Number of rows read = 0

Number of rows skipped = 0

Number of rows loaded = 0

Number of rows rejected = 0

Number of rows deleted = 0

Number of rows committed = 0

$ db2 drop table db2inst1.FACT_WBCKTJB_18

$ db2 connect reset

总结:

1.cursor是个好东西,最好的数据数据搬运车,这两年工作多亏他了;

2.insert的执行过程还需要细细研究;

3.db2该学习oracle的rowid这种唯一列标识;

4.db2 V8明年终于可以sayounara了;

5.有空的时候需要锻炼锻炼颈椎和腰椎了。

一千万条数据去重_DB2千万级数据去重相关推荐

  1. 利用python处理两千万条数据的一些经验(仅供自己记录)

    5.3老板交给我一个任务,简单处理一些数据,三个CSV文件,每个都是2.3G大小,以下是要求 看着觉得很easy,兴冲冲地去搞了,当时还是用的notepad++写python代码,对于python来说 ...

  2. MySQL 快速批量创建千万条数据 千万级数据

     MySQL 快速批量创建千万条数据 千万级数据 一.实现思路 1.创建一张users表,数据库引擎调整为: MyISAM 2.使用存储过程实现,用循环语句,批量插入1kw次.( WHILE ... ...

  3. insert批量插入500ms_如何快速安全的插入千万条数据

    作者:ksfzhaohui 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文 ...

  4. 如何快速安全的插入千万条数据?

    最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...

  5. 对一千万条数据进行排序---编程珠玑第二版 第一章

    本书第一章提出了一个看似简单的问题,有最多1000万条不同的整型数据存在于硬盘的文件中,如何在1M内存的情况下对其进行尽可能快的排序. 每个数字用4byte,1M即可存储250 000个数据,显然,只 ...

  6. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?

    最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...

  7. Java千万数据导入mysql_java之5分钟插入千万条数据

    虽说不一定5分钟就插入完毕,因为取决去所插入的字段,如果字段过多会稍微慢点,但不至于太慢.10分钟内基本能看到结果. 之前我尝试用多线程来实现数据插入(百万条数据),半个多小时才二十多万条数据. 线程 ...

  8. 千万条数据,Stack Overflow是如何实现快速分页的

    转载自 千万条数据,Stack Overflow是如何实现快速分页的 Stack Overflow 在分页机制中使用页码代替偏移量,页码指向基于 LIMIT 和 OFFSET 的查询.假设要对 100 ...

  9. mysql插10万条数据_如何快速安全的插入千万条数据?

    点击上方 小伟后端笔记 ,选择 星标 公众号 重磅资讯.干货,第一时间送达 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半 ...

  10. 使用MySQL可视化客户端,例如SQLyog,Navicat等,只编写SQL语句,使用2的N次方原理,快速初始化百万千万条数据

    目录 1.思路 2.创建表 3.具体操作 4.其他快速插入百万条数据的方法 4.1Java代码批量插入 4.2存储过程批量插入 1.思路 使用MySQL可视化客户端,例如SQLyog,Navicat ...

最新文章

  1. UE4场景设计学习教程
  2. 1123 Is It a Complete AVL Tree (30 分)【难度: 难 / 平衡树 未完成】
  3. C/C++面试题—重建二叉树【前序 + 中序- 重建二叉树 和 后序 + 中序 - 重建二叉树】
  4. 再这样下去,团队半年内就要散了。。
  5. 4x对角线之和c语言,如图,▱ABCD的对角线AC、BD交于点O,EF过点O且与BC、AD分别交于点E、F.试猜想线段AE、CF的关系,并说明理由.——青夏教育精英家教网——...
  6. Visio 2013专业版
  7. java自动签到_原来实现钉钉自动签到如此简单,每天准时上下班不是梦
  8. 区块链:5、匿名性和隐私性
  9. kX3552 + HiFi级播放器 + wifi无线保真= 实战HiFi音乐娱乐欣赏
  10. Mysql分表,分区的区别和联系
  11. oracle版本虚拟机,关于虚拟机装oracle10g64位数据库查看版本位数有趣的问题
  12. AR涂涂乐项目之识别图制作模型的制作一
  13. 纽约大学理工学院:MULTIMEDIA SIGNAL COMPRESSION: SPEECH AND
  14. Unity3D中使用Leap Motion进行手势控制
  15. 我将进化成一条狗(5)——VR和AR
  16. Cobalt Strike Beacon 初探
  17. 记一次linux redhat 7.4 maipo单用户模式恢复文件
  18. 【ceph】Ceph 存储中 PGMap、OSDMap 和xxMap
  19. 7-219 sdut-C语言实验-A+B for Input-Output Practice (不确定次数循环)7-220 sdut-C语言实验——两个数比较
  20. 富士康员工的逆袭之路,从月薪4K到现在月入1W+,是如何做到的?

热门文章

  1. 打开Jupyter报错:EnvironmentLocationNotFound: Not a conda environment
  2. 【天光学术】看文献遇到这三个问题,你会怎么办?
  3. 研究亥姆霍兹线圈轴线磁场分布(2)
  4. Titanic:数据挖掘入门的第一步
  5. 05-kubernetes Pod控制器应用进阶
  6. 北大集训2019垫底记
  7. 阐述什么是B2BCRM?
  8. 联想平板android版本升级,联想乐Pad A1平板安卓4.0升级操作详细教程
  9. vue开发项目必备知识
  10. Diary for simple things.