gpt4 book ai didi

java - 如何向mysql数据库中添加10000行数据

转载 作者:行者123 更新时间:2023-11-29 03:24:06 25 4
gpt4 key购买 nike

在加入数据库之前,需要对数据进行校验,其中三列项目应该是唯一的。所以我创建了一个HashMapper(HashMap Map)来恢复数据库中已经存在的数据。

HashMap<String, Object> eauMap = new HashMap<String, Object>();

于是就有了从数据库中的select操作,我把三个不同的key映射到同一个对象。

List<Object> existObjectList = Service.getAll();
HashMap<String, Object> Map = new HashMap<String, Object>();
for (Object existdata : existEauList) {
Map.put(existdata.getip1(), existdata);
Map.put(existdata.getip2(), existdata);
Map.put(existdata.getip3(), existdata);
}

然后我循环检查通过函数Map.get(key1),Map.get(key2),Map.get(key3)添加数据的每一行。如果有空,我把数据放入列表,我也将其放入 map 中。

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);
}
}
}

然后我将列表提交到数据库。它适用于只有 300 行数据的情况。现在我加10000,服务器崩溃。我该怎么做才能提高效率。需求需要指出哪一行是repeat,项目是springmvc+spring+mybaits搭建的

最佳答案

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

在 MySQL 中,导入大量数据的功能称为 load data infile .

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

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

更新

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

  1. 创建一个与目标表具有相同结构的临时表。
  2. 使用load data infile 语句将所有数据导入临时表。
  3. 在临时表和目标表之间使用带有内部联接 的简单select 将为您提供目标表中已存在的记录。
  4. 使用 insert ... select ... from temp_table left join target table on ... where target_table.identifier_column is null 命令仅将临时表中的那些记录插入目标表中不存在于目标表中。在 where 条件中,如果 3 列的组合唯一标识记录,则您可能必须指定多于 1 列。
  5. 删除临时表。 (或者只是关闭数据库连接)

关于java - 如何向mysql数据库中添加10000行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com