HI,各位: 有一问题没搞明白,特此请教,望指教!谢谢! 我有一个mysql的表A,创建了唯一索引,UNIQUE KEY `iindex` (`name`,`fdate`,`id`)
然后这个表中的数据是通过sqoop从hadoop上导入的,由于更新了hadoop的部分数据,导入过程执行了2次。
结果发现,在这个mysql的表A中,竟然在UNIQUE KEY字段上出现了重复记录,比如,name=wuhan,fdate=2014-05-03,id=333这样的记录有2条一模一样的。发现后再次测试,仍然如此,多次导入后有3条,4条重复的记录。
而实际上mysql表A的这个唯一索引是生效的的,当我手工进行insert时会提示duplicate entry 重复键无法插入。
我现在疑惑的是,sqoop在进行export的时候也是进行的insert A values ('wuhan','2014-05-03','333'),('wuhan','2014-05-03','444').....,这样的操作,
mysql的这个UNIQUE KEY约束应该是在任何insert情况下都会进行检查的吧?为什么这里会导入重复记录呢?
有UNIQUE KEY的表,会在什么情况下被插入重复记录呢?
谢谢!
然后这个表中的数据是通过sqoop从hadoop上导入的,由于更新了hadoop的部分数据,导入过程执行了2次。
结果发现,在这个mysql的表A中,竟然在UNIQUE KEY字段上出现了重复记录,比如,name=wuhan,fdate=2014-05-03,id=333这样的记录有2条一模一样的。发现后再次测试,仍然如此,多次导入后有3条,4条重复的记录。
而实际上mysql表A的这个唯一索引是生效的的,当我手工进行insert时会提示duplicate entry 重复键无法插入。
我现在疑惑的是,sqoop在进行export的时候也是进行的insert A values ('wuhan','2014-05-03','333'),('wuhan','2014-05-03','444').....,这样的操作,
mysql的这个UNIQUE KEY约束应该是在任何insert情况下都会进行检查的吧?为什么这里会导入重复记录呢?
有UNIQUE KEY的表,会在什么情况下被插入重复记录呢?
谢谢!
解决方案 »
- 高手进来 帮看看mysql存储过程的问题 诡异啊
- mysql查询
- 求助: 如何用一条SQL语句统计多个非关联表记录
- 紧急...问一个SQL查询语句!
- mysql中字段的直被改变后能恢复到原来的值吗
- mysql安装问题
- mysql4.1.4字符集问题???怎么修改
- 对于POSTGRES数据库表进行select操作时,如何将两个field合并成一个field
- C#将多个mysql数据库备份成一个xml文件并还原数据时,遇到的字段类型问题
- DBeaver连接mysql建表发生错误
- 有没有MySQL Workbench 6.0 CE的好的中文教程?
- Mysql用触发器控制update操作,求个具体的写法
另外贴出 select * from 表A where name=wuhan,fdate=2014-05-03,id=333 以确信有重复记录。
多谢回复!建表语句:
CREATE TABLE `area_ad` (
`cname` varchar(30) NOT NULL DEFAULT '' COMMENT '城市名称',
`pname` varchar(30) NOT NULL DEFAULT '' COMMENT '省份名称',
`pv` int(11) NOT NULL DEFAULT '0' COMMENT 'PV数',
`click` int(11) NOT NULL DEFAULT '0' COMMENT '点击数',
`fdate` date NOT NULL COMMENT '日期',
`adid` int(11) NOT NULL DEFAULT '0' COMMENT '广告id',
UNIQUE KEY `iindex` (`cname`,`fdate`,`adid`) USING BTREE,
KEY `idate` (`fdate`) USING BTREE,
KEY `icname` (`cname`) USING BTREE,
KEY `ipname` (`pname`) USING BTREE,
KEY `iaid` (`adid`) USING BTREE
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=LAST UNION=(`area_ad_201402`,`area_ad_201403`,`area_ad_201404`,`area_ad_201405`)重复记录的截图:
where cname='武汉市' order by `cname`,`fdate`,`adid`不妨尝试一下,你会找不到那条记录了。 注意 '武汉市' <> '武汉市 ' <> '武汉 市' <>' 武汉市'
from tb
group by `cname`,`fdate`,`adid
应该可以看出来到底一样不一样了