使用java导入mysql时跳过数据中的重复行
我有超过10万行的csv文件,我必须导入到mysql数据库中,该文件包含超过10000个重复项,导入时我必须跳过,我使用ID作为主键并自动递增,所以我不能在mysql中使用ignore数据类型 栏目包括: “id”、“ICD10Code”、“ICD10Desc”、“SNOMED”、“SNOMEDSNOMEDDesc” id是主键 其余4列具有重复的值使用java导入mysql时跳过数据中的重复行,java,mysql,jdbc,duplicates,Java,Mysql,Jdbc,Duplicates,我有超过10万行的csv文件,我必须导入到mysql数据库中,该文件包含超过10000个重复项,导入时我必须跳过,我使用ID作为主键并自动递增,所以我不能在mysql中使用ignore数据类型 栏目包括: “id”、“ICD10Code”、“ICD10Desc”、“SNOMED”、“SNOMEDSNOMEDDesc” id是主键 其余4列具有重复的值 oCon = DBConnection.getConnection(); strSql = "Insert into batch (ICD10Co
oCon = DBConnection.getConnection();
strSql = "Insert into batch (ICD10Code, ICD10Desc, SNOMED,SNOMEDDesc) values (?,?,?,?)";
oPrStmt = oCon.prepareStatement(strSql);
oReader = new BufferedReader(new FileReader(strFileName));
如果有一部分列必须是唯一的,您可以在这些列上定义一个唯一的索引,这将允许您使用IGNORE。只有100k行数据,您应该能够跟踪内存中的文件内容。因此,您可以执行以下操作:
- 创建一个
,其中存储已处理的HashSet uniqueRows
的唯一组合{ICD10Code,ICD10Desc,SNOMED,SNOMEDDesc}
- 对于从CSV读取的每一行,将
的值连接到{ICD10Code,ICD10Desc,SNOMED,SNOMEDDesc}
中,并检查字符串rowString
的值。uniqueRows.contains(rowString)
- 如果该行已在
,请跳过它集中
- 如果该行不在集合中,
将其插入数据库,并将其添加到
集合中
- 如果该行已在