根据列中的重复项从数据中删除整行

时间:2013-04-12 07:19:11

标签: java mysql database duplicates

所以这是我的问题。我有一个巨大的数据文本文件,我需要通过显然使用java程序快速将所有这些数据输入到mySQL数据库中。我唯一的问题是,数据是由某个ID标识的。这些ID中的一些具有重复并且包含与彼此相同的所有信息。我想删除所有这些用于分类目的和清晰度。

最好的方法是什么?如果有人可以提供帮助,我会很感激!

感谢。

2 个答案:

答案 0 :(得分:6)

在读取数据时有一个hashmap或hashset。检查ismap / hashset中是否存在id,如果是,则继续。否则输入set / map并插入。

旁白: hashmap和hashset之间的区别是hashset只接受值,而hashmap接受键值。但是,Hashset本身在内存中使用了一个hashmap,只是为值插入一个虚拟对象。 请参阅:Differences between HashMap and Hashtable?

有关hashset的示例:

    HashSet<Integer> distinctIds = new HashSet<Integer>();

    MyRowData rowdata;
    int rowID;

    while((rowdata = this.getRowData())!=null ) // or however you iterate over the rows using reader etc
    {
    rowID = rowdata.getRowID(); 

    if(!distinctIds.contains(new Integer(rowID)))
    {
      distinctIds.add(rowID);
      inertDataInMysql(rowdata); //however you insert your data here
      System.out.println("Adding " + rowID);
    }
    }

您可以通过对许多行执行可换向插入来使用批量插入来进一步加速代码。参见:

答案 1 :(得分:0)

在向数据库中添加数据时,只需向ID添加主键即可。这样,重复的ID行将不会添加到您的数据库中。希望这会有所帮助。