精华内容
下载资源
问答
  • mysql批量添加数据

    千次阅读 2017-09-20 09:52:54
    mysql批量添加数据

    1、开启mysql的批量处理能力

    在连接url后面添加 ?useServerPrepStmts=false&rewriteBatchedStatements=true

    如:jdbc:mysql://127.0.0.1:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true


    2、步骤
    设置不自动提交 conn.setAutoCommit(false);

    编写insert 语句

    循环处理数据

    提交事务

    具体代码如下:

    public void addBatch(List<BookInfo> bookInfos, Connection conn){
    	PreparedStatement pstmt = null;
    	try {
    		String sql = "INSERT INTO `book_info` (`b_field1`,`b_field2`,`b_field3`) VALUES (?,?,?)";
    		conn.setAutoCommit(false); // 设置手动提交
    		int count = 0;
    		pstmt = conn.prepareStatement(sql);
    		for (BookInfo bookInfo : bookInfos) {
    			int index = 1;
    			pstmt.setObject(index++, bookInfo.getField1());
    			pstmt.setObject(index++, bookInfo.getField2());
    			pstmt.setObject(index++, bookInfo.getField3());
    			pstmt.addBatch(); // 加入批量处理
    			count++;
    		}
    		pstmt.executeBatch(); // 执行批量处理
    		conn.commit(); // 提交
    		System.out.println("BookInfo addBatch All down : " + count);
    	} catch (Exception e) {
    		LogUtils.error("BookInfo addBatch出错", e);//记录错误日志
    		try {
    			conn.rollback();//回滚
    		} catch (SQLException e1) {
    			e1.printStackTrace();
    		}
    	} finally {
    		DBPoolUtils.closeAll(conn, pstmt);//关闭连接
    	}
    }

    注意以上bookInfos的大小取决于mysql的my.ini配置,如果数据量很大可以优化配置,具体步骤如下:

    修改 bulk_insert_buffer_size=120M 或者更大,默认是8M
    将insert语句的长度设为最大。
    Max_allowed_packet=1M
    Net_buffer_length=8k
    保存




    展开全文
  • mysql批量增加数据

    2020-05-09 10:53:34
    需要从数据库mysql里增加大量数据,楼主使用的是Navicat,用的是函数批量增加 新增函数——过程,添加函数,其实就是一个while的循环,增加必要的字段值,如下 CREATE DEFINER=root@% PROCEDURE sn_insert() BEGIN #...

    需要从数据库mysql里增加大量数据,楼主使用的是Navicat,用的是函数批量增加

    新增函数——过程,添加函数,其实就是一个while的循环,增加必要的字段值,如下

    CREATE DEFINER=root@% PROCEDURE sn_insert()
    BEGIN
    #Routine body goes here…
    declare i int default 0;
    set i=1;
    while i<10000000
    do
    insert production_sn_main_file1 (id,pro_department,mes_no,material_no,material_name,model,pro_number,customer_name,generater,generate_date,in_status,qualified_status,no,data_center_id) VALUE
    (i,“DEtest”,i,i,“wltest”,“PCTEST”,i,“custester”,“TESTER”,“2020-05-09 10:18:45”,1,1,i,412);
    set i=i+1;
    end while;
    commit;
    END

    展开全文
  • 原理:先手动添加几个数据库,通过查询已经添加数据集合,通过<foreach>遍历添加, mapper.xml代码 <foreach> 这里集合数据不应超过500,300即可,如果集合过大<foreach>添加效率反而降低; ...

    原理:先手动添加几个数据库,通过查询已经添加的数据集合,通过<foreach>遍历添加,

    mapper.xml代码 

    <foreach> 这里集合数据不应超过500,300即可,如果集合过大<foreach>添加效率反而降低;
    	<insert id="batchSave" parameterType="java.util.List">
    		INSERT INTO w_href
    		(name, csdnHref, createDate, type, status)
    		VALUES
    		<foreach collection="list" item="item" index="index" separator=",">
    			(
    			#{item.name},
    			#{item.csdnHref},
    			#{item.createDate},
    			#{item.type},
    			#{item.status}
    			)
    		</foreach>
    	</insert>
    
    
    
    	<!-- 查询all -->
    	<select id="selectAll"  resultType="HrefUrlEntity">
    		select * from w_href a WHERE a.id &lt; 301
    	</select>

    dao层

    public void batchSave(@Param("list") List<HrefUrlEntity> list);
    
    
    public List<HrefUrlEntity> selectAll();

    service层

        public void batchSave(List<HrefUrlEntity> hrefUrlEntities){
    		hrefUrlDao.batchSave(hrefUrlEntities);
    	}
    
    
    
    	public List<HrefUrlEntity> selectAll(){
    		return hrefUrlDao.selectAll();
    	}

     

    Controller层,先查询到已经添加的数据,通过for循环遍历,将查询的数据再次添加,依次循环,短时间内可以添加上百万数据

    	@Test
    	public void getFi() throws ParseException {
    		for (int i = 0;i<2000;i++) {
    			List<HrefUrlEntity> hrefUrlEntities =hrefUrlService.selectAll();
    			hrefUrlService.batchSave(hrefUrlEntities);
    		} 
    	}

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • **批量添加数据** `class Messages extends ChefModel { // protected $table = 'messages'; // 批量添加 性能更好,推荐使用 public static function batchAdd($data) { DB::table('messages')->...

    **批量添加数据**

     

    `class Messages extends ChefModel {
    //
    protected $table = 'messages';
    
    // 批量添加 性能更好,推荐使用
    public static function batchAdd($data) {
    DB::table('messages')->insert($data);
    }
    
    
    }
    

      

    实测,每次添加5000条数据时,速度最快

    public function send($pushLog) {
    $ftype = $pushLog->ftype;
    $title = $pushLog->title;
    $content = $pushLog->content;
    $description = $pushLog->description;
    $isAll = $pushLog->is_all;
    
    $userIdArray = [];
    if ($isAll == 1) {
    $userIdArray = User::pluck("id");
    } else {
    $userIdArray = explode(",", $description);
    }
    $num = 5000; //分组,每次群发5000个用户,实测5000个速度最快
    $group = [];
    $created = Date("Y-m-d H:i:s", time());
    $updated = Date("Y-m-d H:i:s", time());
    Log::debug("groupdata start:" . Date("H:i:s", time()));
    for ($i = 0; $i < count($userIdArray); $i++) {
    $group[$i / $num][] = ['user_id' => $userIdArray[$i],
    'title' => $title,
    'remark' => $content,
    'ftype' => 3, //系统消息
    'created_at' => $created,
    'updated_at' => $updated];
    }
    Log::debug("groupdata finish:" . Date("H:i:s", time()));
    foreach ($group as $key => $data) {
    Messages::batchAdd($data);
    if ($isAll == 0) {
    UserProfile::whereIn("user_id", array_column($data, 'user_id'))->increment("system_count");
    }
    }
    if ($isAll == 1) {
    UserProfile::increment("system_count");
    }
    Log::debug("adddata finish:" . Date("H:i:s", time()));
    $pushLog->status = 1; // 发送成功
    $pushLog->success_users = count($userIdArray);
    $pushLog->updated_at = Date("Y-m-d H:i:s", time());
    $pushLog->save();
    }
    

      

    转载于:https://www.cnblogs.com/lianruihong/p/10566875.html

    展开全文
  • 给一个表中的catid和name字段批量添加数据。 每个catid都拥有九个name属性。 [b]例子:[/b] insert into category_option (catid, name) values ('1073','单位'),('1073','单价'),('1073','促销价'),('1073','...
  • 一个经常会用到的存储过程,可以用来造数据。 1…100000的意思为从1到100000循环,来实现自增id orcal: begin for i in 1. .100000 loop INSERT INTO "A" ( "ID" , "date" , "type" , "name" ...
  • 通过调用mySQLdb python库中的 ...今天用这个函数完成了批量插入例程:def test_insertDB():conn = database.Connection(host=options.mysql_host, database=options.mysql_database,user=options.mysql_user, pas...
  • 很多时候我们都需要大量的数据 下面就来讲一讲mysql如何添加大量数据 此方法效率不一定会高 ,但是这个方法一定是最简单的 首先,建一张表,字段没有要求 这里我准备
  • MySql实现批量添加数据 下面展示一些 内联代码片。 // An highlighted block insert into classinfo(classname,begintime)//classinfo表名,后面跟条件 values('18网销108','2020-03-01'),//values值,添加数据的值 ...
  • mysql 批量造假数据

    千次阅读 2019-01-12 05:03:25
    1.首先有个基本的表。有一条基本的语句。 2.魔法语句--&gt;INSERT into test_batch(number1,test)...3.这样,就复制了原本表中有的数据,然后新插入了。 4.如果想达到万级别。就写个存储过程,走循环。  ...
  • PHP向MYSQL数据库批量添加数据。首先接受过来的数据都在$_POST里,通过foreach我们来处理,我举个最简单的例子。 比如一些处理sql注入或js注入的函数叫check(); return 的是被处理后的结果,而非真或假。
  • 批量更新数据数据批量更新数据时,当检查sql语句没错,偏偏执行不了时。检查连接SQL的 url中有没有添加 &allowMultiQueries=true ,如果没有开启批量处理,执行批量更新操作就会报错。 注意: 请尽量避免使用 $...
  • Mysql批量更新数据

    2017-07-05 12:04:48
    由于MySQL默认不支持批量更新,如果我们想批量更新,最简单的就是修改数据库连接池,添加&allowMultiQueries=true如果直接加上去会报一个缺少“;”分号结束的错误,就需要在前面加上 才可以正常运行。
  • mysql批量添加一定规则的数据

    千次阅读 2015-03-17 10:13:01
    MySQL 批量添加数据 information_schema
  • 最近在网上学的jsoup爬数据,爬了大概几万条城市地区的数据准备通过mybatis插入的mysql里,九个字段除了ID,其它都是varchar类型,区划代码是十二位数字暂时也是用的varchar; 想过三种插入方式 1:service层循环...
  • gorm mysql批量插入数据

    2021-05-25 14:10:10
    * 获取批量添加数据sql语句 */ func getBranchInsertSql(data interface{}, tableName string) (string, error) { var isArr bool dataValue := reflect.ValueOf(data) switch dataValue.Kind() { case ...
  • MySQL批量插入数据教程: 1.创建如图储存过程; 2.调用插入2万条数据
  • 这里编写一个批量插入数据数据脚本: 1)设置log_bin_trust_function_creators //创建函数,假如报错:This function has none of DETERMINISTIC… 查看是否开启: show variables like 'log_bin_trust_function...
  • 项目中mysql批量插入大概50000左右数据,使用事务和批量,但是速度依旧很慢,大约60s左右,迫切希望改进这个问题。 二、问题原因 尽管是批量addBatch()但是,mysql却默认没有执行批量,时间还是一条一条添加导致速度...
  • Mysql批量插入数据时如何解决重复问题? 前两天写代码遇到如果有相同数据就删除,采用新传入的数据,当时着急就用的delete+insert。今天有空就问了下度娘,感觉很有用,记录下来。 三种方法如下: 使用以上方法的...
  • MySQL 批量插入数据,单次插入多少条数据效率最高

    万次阅读 多人点赞 2019-11-26 18:29:10
    文章目录一、前言二、批量插入前准备1、插入到数据表的字段2、计算一行字段占用的空间3、在数据里做插入操作的时候,整体时间的分配三、批量插入数据测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能...
  • 文章目录一、前言二、批量插入前准备1、插入到数据表的字段2、计算一行字段占用的空间3、在数据里做插入操作的时候,整体时间的分配三、批量插入数据测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能...
  • mysql 批量插入数据

    2019-03-22 14:52:26
    业务需要统计数据,刚开始用的是传统的方法,查询,然后循坏插入,竟然用了大半个钟: while ($item = $query->fetch()) { $barrel = new DataBarrel(); $barrel->type = 4; $barrel->user_id = $item...
  • mysql批量更新数据:mysql驱动连接字符串要添加: rewriteBatchedStatements=true  完全路径: jdbc.url=jdbc:mysql://localhost:9906/oa?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&...
  • MySQL批量插入数据,分批提交笔记

    千次阅读 2019-07-12 13:12:33
    前言:之前就接触过MySQL批量提交,但是相对而言,虽然比单条提交速度快很多但是,如果...2.使用高速提交,关闭MySQL服务器的预处理,开启批量添加: 耗时如下: 总结:两种情况下,开起了高效批量提交,...
  • 事务对mysql批量插入数据的影响 前言 ​ 本人一年开发经验的小白,在项目中遇到一个API中需要一次向多张表中插入多条数据的情况,发现API响应接口很慢(mysql直接部署在linux中的时候不明显,mysql部署在docker中较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,340
精华内容 30,536
关键字:

mysql批量增加数据

mysql 订阅