Java 如何向mysql数据库添加10000行数据

Java 如何向mysql数据库添加10000行数据,java,mysql,insert,hashmap,Java,Mysql,Insert,Hashmap,在添加到数据库之前,应该检查数据。有三列项目应该是唯一的。因此,我创建了一个HashMapper(HashMap Map)来恢复数据库中已经存在的数据 HashMap<String, Object> eauMap = new HashMap<String, Object>(); 然后我将列表提交到数据库。 它在只有300行数据时工作。现在我加了10000,服务器崩溃了。如何提高效率。 需求需要指出哪一行是重复的。项目由springmvc+spring+mybaits设置

在添加到数据库之前,应该检查数据。有三列项目应该是唯一的。因此,我创建了一个HashMapper(HashMap Map)来恢复数据库中已经存在的数据

HashMap<String, Object> eauMap = new HashMap<String, Object>();
然后我将列表提交到数据库。 它在只有300行数据时工作。现在我加了10000,服务器崩溃了。如何提高效率。
需求需要指出哪一行是重复的。项目由springmvc+spring+mybaits设置

如果您需要向任何rdbms添加数千条记录,您应该使用rdbms提供的功能导入数据

在MySQL中,用于导入大量数据的功能称为

在目标表中,在需要唯一的字段上创建唯一索引或主键。在
load data infle
语句中指定
ignore
子句,以便在遇到重复条目时不会停止导入:

load data infile 'filename' ignore into table yourtable ...
更新

如果需要识别重复记录,则

  • 创建与目标表具有相同结构的临时表
  • 使用
    load data infle
    语句将所有数据导入临时表
  • 在临时表和目标表之间使用一个简单的
    select
    internaljoin
    ,将为您提供目标表中已经存在的记录
  • 使用
    插入。。。选择。。。从temp_表左连接目标表,在。。。如果target_table.identifier_column为null
    命令,则仅将临时表中不存在的记录插入目标表中。在where条件下,如果3列的组合唯一标识记录,则可能必须指定多个列
  • 放下临时桌子。(或仅关闭数据库连接)

  • 您是否使用prepared语句和addBatch来添加这些记录?通常,批处理执行将比单个插入提供更好的性能。哪个服务器给你出了问题?MySQL或您正在运行的任何java进程?当服务器发生故障时,您是否有任何错误或堆栈跟踪?它是否内存不足?我使用mybaits和addBatch添加这些重排序。我将项目部署到本地tomcat。但当我导入数据时,我等待了50秒,myeclipse崩溃并停止。是的,但要求需要指出哪一行是重复的。如果我使用此代码忽略重复的数据,我如何才能达到要求?下次请分享问题中的任何要求,而不仅仅是在后续评论中。我会更新答案。是的。谢谢,但我如何才能将其应用于springmvc+spring+mybaits?因此我应该编写函数将excel文件更改为csv?不幸的是,
    load data infile
    无法从和excel文件加载数据,因此如果您的数据就是这样,那么您应该将其转换为csv。
    for loop:
      Object data = (Object) Map.get(ip1);//ip1 is from the cell value
        if (data == null) {
            data=(Object)Map.get(ip2);
            if(data==null){
                  data=(Object)Map.get(ip3);
               if(data==null){
                     …………………………
                     Map.put(ip1,newdata);
                     Map.put(ip2,newdata);
                     Map.put(ip3,newdata);
                    }
                }
         }
    
    load data infile 'filename' ignore into table yourtable ...