Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java导入mysql时跳过数据中的重复行_Java_Mysql_Jdbc_Duplicates - Fatal编程技术网

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

使用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

我有超过10万行的csv文件,我必须导入到mysql数据库中,该文件包含超过10000个重复项,导入时我必须跳过,我使用ID作为主键并自动递增,所以我不能在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));

如果有一部分列必须是唯一的,您可以在这些列上定义一个唯一的索引,这将允许您使用IGNORE。

只有100k行数据,您应该能够跟踪内存中的文件内容。因此,您可以执行以下操作:

  • 创建一个
    HashSet uniqueRows
    ,其中存储已处理的
    {ICD10Code,ICD10Desc,SNOMED,SNOMEDDesc}
    的唯一组合
  • 对于从CSV读取的每一行,将
    {ICD10Code,ICD10Desc,SNOMED,SNOMEDDesc}
    的值连接到
    字符串rowString
    中,并检查
    uniqueRows.contains(rowString)
    的值。
    • 如果该行已在
      集中
      ,请跳过它
    • 如果该行不在集合中,
      将其插入数据库,并将其添加到
      集合中

这是我的专栏数据哦。。。那么很抱歉。。我以为那只是垃圾邮件。@Kostas Mitsrakis我找不到你