我在 csv 文件中有超过 100k 行,我必须导入到 mysql 数据库,该文件包含超过 10000 个重复项,导入时我必须跳过,我使用 ID 作为主键及其自动递增,所以我可以' t 在 mysql 中使用忽略数据类型。
列是: “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));
最佳答案
只有 10 万行数据,您应该能够跟踪内存中的文件内容。因此,您可以执行以下操作:
- 创建
HashSet<String> uniqueRows
您存储{ICD10Code, ICD10Desc, SNOMED, SNOMEDDesc}
的独特组合的位置你已经处理过了。 - 对于从 CSV 中读取的每一行,连接
{ICD10Code, ICD10Desc, SNOMED, SNOMEDDesc}
的值进入String rowString
并检查uniqueRows.contains(rowString)
的值.- 如果该行已经在
Set
中, 跳过它 - 如果行不在集合中,
INSERT
它进入数据库并将其添加到Set
.
- 如果该行已经在
关于java - 使用java导入mysql时跳过数据中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790521/