java - 使用java导入mysql时跳过数据中的重复行

标签 java mysql jdbc duplicates

我在 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/

相关文章:

php - Ajax聊天系统-使用查询从表中选择两次

java - 从 Java ResultSet 获取值

java - 在 PApplet 上设置默认关闭操作(处理中)

Java数组修饰符方法

java - 使 ListView 接收我正在使用 fragment 的两个文本

java - 删除 MySQL 表 JDBC 中的特定项目

mysql - sq.read.jdbc 和 sq.read.format ('jdbc' 之间有什么区别)?

java - 配置属性注释问题

MySQL随机与特定选项

mysql - 向 JOIN 或 WHERE 子句添加多个条件时,查询不会为某个字段生成任何记录