因为项目需求,客户给的数据文件中存在主键大小写不同去他完全相同的两条数据记录,要导入未设置区分主键字段大小写的MySQL数据库中,相同的新增主键会报主键异常。
异常发生在主键字段,进行主键的重复的去重操作,确保相同主键字段在不区分大小写的情况下只有一条数据。
利用HashSet集合,在批量插入数据库之前进行主键去重判断。
/**
* 去除主键重复存在的数据
*
* @param list
*/
private void listDuplicateRemovalWithIndexKey(List<String[]> list) {
Set<String> setKeys = new HashSet<String>();
String keyStr;
Iterator<String[]> it = list.iterator();
while (it.hasNext()) {
String[] a = it.next();
// 拼接主键值
keyStr = getIndexKeyStr(a);
// 判断主键是否已经存在
if (setKeys.contains(keyStr)) {
it.remove();
} else {
setKeys.add(keyStr);
}
}
}
getIndexKeyStr()方法为拼接主键的方法。