一千万条数据去重_DB2千万级数据去重
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千万级数据去重相关推荐
- 利用python处理两千万条数据的一些经验(仅供自己记录)
5.3老板交给我一个任务,简单处理一些数据,三个CSV文件,每个都是2.3G大小,以下是要求 看着觉得很easy,兴冲冲地去搞了,当时还是用的notepad++写python代码,对于python来说 ...
- MySQL 快速批量创建千万条数据 千万级数据
MySQL 快速批量创建千万条数据 千万级数据 一.实现思路 1.创建一张users表,数据库引擎调整为: MyISAM 2.使用存储过程实现,用循环语句,批量插入1kw次.( WHILE ... ...
- insert批量插入500ms_如何快速安全的插入千万条数据
作者:ksfzhaohui 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文 ...
- 如何快速安全的插入千万条数据?
最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...
- 对一千万条数据进行排序---编程珠玑第二版 第一章
本书第一章提出了一个看似简单的问题,有最多1000万条不同的整型数据存在于硬盘的文件中,如何在1M内存的情况下对其进行尽可能快的排序. 每个数字用4byte,1M即可存储250 000个数据,显然,只 ...
- mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?
最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...
- Java千万数据导入mysql_java之5分钟插入千万条数据
虽说不一定5分钟就插入完毕,因为取决去所插入的字段,如果字段过多会稍微慢点,但不至于太慢.10分钟内基本能看到结果. 之前我尝试用多线程来实现数据插入(百万条数据),半个多小时才二十多万条数据. 线程 ...
- 千万条数据,Stack Overflow是如何实现快速分页的
转载自 千万条数据,Stack Overflow是如何实现快速分页的 Stack Overflow 在分页机制中使用页码代替偏移量,页码指向基于 LIMIT 和 OFFSET 的查询.假设要对 100 ...
- mysql插10万条数据_如何快速安全的插入千万条数据?
点击上方 小伟后端笔记 ,选择 星标 公众号 重磅资讯.干货,第一时间送达 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半 ...
- 使用MySQL可视化客户端,例如SQLyog,Navicat等,只编写SQL语句,使用2的N次方原理,快速初始化百万千万条数据
目录 1.思路 2.创建表 3.具体操作 4.其他快速插入百万条数据的方法 4.1Java代码批量插入 4.2存储过程批量插入 1.思路 使用MySQL可视化客户端,例如SQLyog,Navicat ...
最新文章
- UE4场景设计学习教程
- 1123 Is It a Complete AVL Tree (30 分)【难度: 难 / 平衡树 未完成】
- C/C++面试题—重建二叉树【前序 + 中序- 重建二叉树 和 后序 + 中序 - 重建二叉树】
- 再这样下去,团队半年内就要散了。。
- 4x对角线之和c语言,如图,▱ABCD的对角线AC、BD交于点O,EF过点O且与BC、AD分别交于点E、F.试猜想线段AE、CF的关系,并说明理由.——青夏教育精英家教网——...
- Visio 2013专业版
- java自动签到_原来实现钉钉自动签到如此简单,每天准时上下班不是梦
- 区块链:5、匿名性和隐私性
- kX3552 + HiFi级播放器 + wifi无线保真= 实战HiFi音乐娱乐欣赏
- Mysql分表,分区的区别和联系
- oracle版本虚拟机,关于虚拟机装oracle10g64位数据库查看版本位数有趣的问题
- AR涂涂乐项目之识别图制作模型的制作一
- 纽约大学理工学院:MULTIMEDIA SIGNAL COMPRESSION: SPEECH AND
- Unity3D中使用Leap Motion进行手势控制
- 我将进化成一条狗(5)——VR和AR
- Cobalt Strike Beacon 初探
- 记一次linux redhat 7.4 maipo单用户模式恢复文件
- 【ceph】Ceph 存储中 PGMap、OSDMap 和xxMap
- 7-219 sdut-C语言实验-A+B for Input-Output Practice (不确定次数循环)7-220 sdut-C语言实验——两个数比较
- 富士康员工的逆袭之路,从月薪4K到现在月入1W+,是如何做到的?