我在csv文件中有超过100k行,我必须导入到mysql数据库,该文件包含超过10000个重复项,我必须在导入时跳过,并且我使用ID作为主键及其自动增量,所以我可以&# 39;在mysql中使用ignore数据类型。
列是: " id"," ICD10Code"," ICD10Desc"," SNOMED"," SNOMEDSNOMEDDesc"
id是主键 其余4列有重复值
oCon = DBConnection.getConnection();
strSql = "Insert into batch (ICD10Code, ICD10Desc, SNOMED,SNOMEDDesc) values (?,?,?,?)";
oPrStmt = oCon.prepareStatement(strSql);
oReader = new BufferedReader(new FileReader(strFileName));
答案 0 :(得分:1)
只有100k行数据,您应该能够跟踪内存中的文件内容。所以,您可以执行以下操作:
HashSet<String> uniqueRows
,您可以在其中存储已处理的{ICD10Code, ICD10Desc, SNOMED, SNOMEDDesc}
的唯一组合。{ICD10Code, ICD10Desc, SNOMED, SNOMEDDesc}
的值连接到String rowString
并检查uniqueRows.contains(rowString)
的值。
Set
中,请跳过INSERT
将其放入数据库并将其添加到Set
。答案 1 :(得分:0)
如果有一个列的子集必须是唯一的,您可以在它们上定义一个唯一索引,这将允许您使用IGNORE。