精华内容
下载资源
问答
  • 2018-09-15 11:32:11
    方法一
    -- mysql动态批量插入数据,储存过程
    -- 如果存在此存储过程则删掉
    DROP PROCEDURE IF EXISTS proc_initData;
    DELIMITER $
    CREATE PROCEDURE proc_initData()
    BEGIN
        DECLARE i INT DEFAULT 1;
    		DECLARE id INT DEFAULT 68000;
    		DECLARE orderno BIGINT DEFAULT 100020001012;
        WHILE i<=10000 DO
    				SET id = id+1;
    				SET orderno = orderno+1;
            INSERT INTO `delivery_warning_detail` VALUES(id , '2018-8-10', NULL, orderno, 'US', 'CN06', 'USSFOY', 'LAX', 'LAX03S', 'LAX03S01D', 'EE', 1, 3.000, 3.000, '92705', 0, NULL, NULL, NULL, NULL, '2018-7-23 13:50:00', NULL, NULL, NULL, NULL, NULL, NULL, '2018-7-23 02:10:00', NULL, NULL, '82h38m', 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, '10.202.72.89', NULL, '2018-7-26 17:48:54', '2018-7-23 11:26:38');
    				SET i = i+1;
    				SELECT concat('运单号', orderno);/*输出执行的运单号*/
        END WHILE;
    END $
    CALL proc_initData();
    
    
    方法二
    
    DELIMITER $
    CREATE PROCEDURE usertest( fieldstr VARCHAR(200), tablename VARCHAR(200), orderstr VARCHAR(100), ordersort INT)
    BEGIN
    	DECLARE sort VARCHAR(20);
    	DECLARE tmpsql VARCHAR(500);
    	SET sort = '';
    	IF ordersort=0 THEN
    		SET sort='asc';
    	ELSE
    		SET sort='desc';
    	END IF;
    	SET @sqlcmd = CONCAT('select ' , fieldstr , ' from ' , tablename , ' order by ' , orderstr , ' ' , sort);
    	PREPARE tmpsql FROM @sqlcmd;		
    	SELECT @sqlcmd;	/*输出执行的sql语句*/
    	EXECUTE tmpsql;
    	DEALLOCATE PREPARE tmpsql;	
    END $
    
    -- ---------------------------------------------- --
    

     

    更多相关内容
  • MySQL批量插入


    前言

    MySQL批量插入操作相较于单次循环插入有较大的优势,在特定场景下,有比较重要的应用价值。


    一、MySQL批量插入的应用场景

    我在做项目的时候遇到Excel导入基础数据的情况,在对Excel进行解析,并拿到Excel里面的数据之后,下一步是插入数据库。最简单的方式是使用单次循环插入,但是这种方法效率太慢,不具有事务特征,所以使用批量插入的方法。

    二、实现过程

    1、Controller层获得导入的Excel数据

    代码如下(代码中的CourseInfoList就是一个List集合,存储着CourseInfo对象):

        @PostMapping("/importCourse")
        public AjaxResult importCourse(MultipartFile file) throws Exception{
            GeneralListener<CourseInfo> generalListener = new GeneralListener<>();
            EasyExcel.read(file.getInputStream(),CourseInfo.class,generalListener).sheet().doRead();
            List<CourseInfo> courseInfoList = generalListener.getList();
            courseService.insertCourseByBatch(courseInfoList);
            return AjaxResult.success();
        }
    

    2、mapper.xml的SQL语句

    service层和domain层就省略了。

    • mapper.java代码如下:
    @Mapper
    public interface CourseInfoMapper {
        void insertCourseByBatch(@Param("list") List<CourseInfo> list);
    }
    
    • mapper.xml代码如下:
      <insert id="insertCourseByBatch" parameterType="java.util.List">
        insert into course_info (id,courseNo,courseName, courseAttr, credit, totalHour, status, description)
        values
        <foreach collection="list" item="item" index="index" separator=",">
          (#{item.id,jdbcType=BIGINT},#{item.courseno,jdbcType=VARCHAR},#{item.coursename,jdbcType=VARCHAR},#{item.courseattr,jdbcType=VARCHAR},#{item.credit,jdbcType=INTEGER},#{item.totalhour,jdbcType=INTEGER},#{item.status,jdbcType=INTEGER},#{item.description,jdbcType=VARCHAR})
        </foreach>
      </insert>
    

    这里遇到一个坑,网上很多博客在写这块的时候,都没有加上jdbcType,我一开始也没加,但是一直报错,后来加上jdbcType之后,才解决问题。

    3、批量插入优点

    • 批量插入效率比单次插入要高很多,能节省大约2/3的时间,原因在于:(1)降低了日志(MySQL的binlog和innodb的事务日志)刷盘的数据量和频率。(2)减少了SQL语句的解析次数。(3)、减少了网络传输的IO等。
    • 操作的事务性。单次插入时,每个insert会开启一个事务,当执行很多insert的时候,会影响插入的性能。使用批量插入,可以在执行完成之后commit,保证了整批数据要么同时插入,要么都不插入。
    • 批量插入有数据量的限制,即max_allowed_packet值,超过最大值会报错,但是一般情况下不会超过最大值,如果需要插入几十万条甚至上百万条数据,就需要对这种情况进行处理。

    总结

    这里对mybatis批量插入进行一个小的总结,本质上是将很多条待插入的数据拼接为一条SQL语句,再执行插入操作,在Excel导入等场景下是很有用的。

    展开全文
  • 本篇博客主要优化 MySQL 中的插入操作,核心实现 insert 优化任务。 load data infile 导入数据 使用上述命令,可以大幅度提高批量插入数据。 如果希望使用该命令,可以用 show 命令进行测试 show variables like '%...

    本篇博客主要优化 MySQL 中的插入操作,核心实现 insert 优化任务。

    插入数据

    ** load data infile 导入数据**
    使用上述命令,可以大幅度提高批量插入数据。
    如果希望使用该命令,可以用 show 命令进行测试

    show variables like '%infile%'
    

    在这里插入图片描述

    使用批量插入
    如果希望一次性插入多条数据,可以使用一条 insert 语句,然后拼接多行数据。

    insert into 表名 values(...),(...),(...)
    

    禁用唯一检查
    在插入数据时,可以临时取消唯一性校验,具体办法是在插入前执行下述命令

    set unique_checks = 0
    

    插入完毕之后在打开

    set unique_checks = 1
    

    禁用外键检查
    与上述逻辑一致,相关命令如下所示。

    set foreign_key_checks = 0
    set foreign_key_checks = 1
    

    禁止自动提交
    禁止事务自动提交

    set autocommit = 0
    set autocommit = 1
    

    禁用索引
    临时性关闭索引

    alter table 表名 disable keys
    

    执行完毕打开索引

    alter table 表名 enable keys
    

    从配置的角度进行修改

    bulk_insert_buffer_size 缓存大小,默认 8M,可以提高。

    show variables like 'bulk_insert%'
    

    在这里插入图片描述

    这个参数只能对 MyISAM 使用, innodb 无效。

    max_allowed_packet 接受的数据包大小,默认为 16M,可以提高。

    show variables like 'max_all%'
    

    在这里插入图片描述

    net_buffer_length 通信时缓存数据的大小,最小4k,最大16M,默认是1M。

    show variables like 'net_buffer_length'
    

    在这里插入图片描述

    其它可学习内容

    尽量在事务中进行插入操作
    MySQL 默认每次进行 insert 操作时,都会创建一个事务,所以我们提前将批量插入操作放置到事务中,可以提高效率。

    START TRANSACTION; 
    insert into 表名 values(...),(...),(...);
    insert into 表名 values(...),(...),(...);
    insert into 表名 values(...),(...),(...);
    COMMIT;
    

    感兴趣的化 订阅一下 《Python爬虫120》

    橡皮擦的第 595 篇原创博客。

    展开全文
  • mysql数据库插入当前时间

    千次阅读 2021-01-19 03:25:53
    mysql相关的三个函数有:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以’HH:MM:SS’的...

    mysql相关的三个函数有:

    NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。

    CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。

    CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

    例:

    jdbcTemplate.execute("insert into cw_info(cw_name,update_time) values('"+cwInfo.getCwName()+"',NOW(),')");

    Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

    做易买网项目,由于对数据库插入系统时间不了解,常常遇到的问题: 1.java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配.原因:由于获取系统时间类型不对,应为sy ...

    mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)

    通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...

    160304-01、mysql数据库插入速度和读取速度的调整记录

    需求:由于项目变态,需要在一个比较短时间段急剧增加数据库记录(两三天内,由于0增加至5亿).在整个过程调优过程非常艰辛 思路: (1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data Fil ...

    解决Python向MySQL数据库插入中文数据时出现乱码

    解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...

    你向 Mysql 数据库插入 100w 条数据用了多久?

    阅读本文大概需要 2 分钟. ▌目录 多线程插入(单表) 多线程插入(多表) 预处理 SQL 多值插入 SQL 事务( N 条提交一次) ▌多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程 ...

    关于mysql数据库插入数据,不能插入中文和出现中文乱码问题

    首先,推荐一篇博客:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当时,我安装完mysql数据库后,新建一个数据库后插入数据 ...

    mysql数据库中查询时间

    项目中要对数据按时间处理,在数据库中,时间处理的格式如 2014-12-09 06:30:17 时间查询出来如下所示: 现在要查询具体有哪天的数据,应用substring函数,SQL如下: ) as ...

    mysql数据库truncate表时间长处理

    [环境介绍] 系统环境:Linux + mysql 5.7.18 + 主从复制架构 [背景描述] 客户反映用在mysql数据库上truncate一个innode引擎的list分区100G左右表时,耗时 ...

    MySQL数据库插入中文乱码解决方法

    在mysql数据库中,插入中文数据时,会出现乱码的现象. 我的测试方法: 首先用Navicat for MySql 插入一行数据,带有中文的. 再用mysql命令行来查看插入的数据,看是否出现乱码. ...

    随机推荐

    python getopt使用

    函数getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:] shortopts 短格式 (-) longopts 长格式(--) 命令 ...

    dedecms &sol;member&sol;myfriend&lowbar;group&period;php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Dedecms会员中心注入漏洞 Relevant Link http:/ ...

    Jmeter之参数化(五)

    Jmeter用函数(__Random)批量添加的用法 首先点击  选项----->函数助手对话框-----> 这个是随机取值的意思 在这边输入取值的范围  然后点生成 即可 例如  从 数 ...

    WPF 之 设置Dialog的父窗体

    1.如果弹出窗体(如ChildWindow),调用Show方法,并且设置了其Owner属性: ClassRootWindow { void Foo() { ChildWindow cw = newCh ...

    linux开发

    linux开发资料 01 02 03 04 05 06 07 08 09 10 11 1 2 3 4 5 21 22 23 24 25

    自动获取svn的版本号

    需求 在做打包时,需要获取本地svn仓库的版本号,如下所示: 下面是我试过的几种做法 SubWCRev 使用SubWCRev.exe(TortoiseSVN自带的小工具),用法简单,但获取到的版本号有 ...

    图像数据增强 &lpar;Data Augmentation in Computer Vision&rpar;

    1.1 简介 深层神经网络一般都需要大量的训练数据才能获得比较理想的结果.在数据量有限的情况下,可以通过数据增强(Data Augmentation)来增加训练样本的多样性, 提高模型鲁棒性,避免过拟 ...

    Uni2D入门

    转载 http://blog.csdn.net/kakashi8841/article/details/17558059 开始 Uni2D增加了一些新的便利的特性给Unity,它们用于推动你2D工作流 ...

    box-sizing border-box 的理解

    http://blog.csdn.net/isaisai/article/details/20449827 -webkit-box-sizing: border-box;  则div 设置的宽高将包含 ...

    LeetCode题解之Single Number

    1.题目描述 2.分析 3.代码 int singleNumber(vector& nums) { map m; for( vector&l ...

    展开全文
  • 文章目录一、前言二、批量插入前准备1、插入到数据表的字段2、计算一行字段占用的空间3、在数据里做插入操作的时候,整体时间的分配三、批量插入数据测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能...
  • mysql循环插入数据

    千次阅读 2022-01-13 15:01:11
    MySql使用存储过程插入数据 #创建存储过程 CREATE PROCEDURE test_insert () #开始 BEGIN #定义变量 DECLARE i INT DEFAULT 1; #条件判断 WHILE i<1000000 #执行 DO #SQL INSERT SQL ;
  • Mysql - 插入查询数据

    千次阅读 2022-01-06 16:28:48
    单条语句插入 insert into tbl_name(column1,column2) values ("1","data1"); 从其他表中查询到数据插入表中 insert into tbl_name1 (column1,columne2) select data1,data2 from tbl_name2;
  • mysql批量插入数据

    千次阅读 2021-07-23 09:48:14
    在此还记录了一些mysql基础知识,可以用作参考 优化方案 插入语句 普通使用的插入语句: insert into table (col1,col2,col3) values (’ 1’,’ John ‘,’ stu ‘); insert into table (col1,col2,col3) ...
  • Python 调用MySQL插入含有变量的数据

    万次阅读 2018-06-01 01:00:20
    注意 占位符和双引号
  • 如何在MySQL插入日期?

    千次阅读 2021-01-29 19:17:10
    MySQL插入日期的方法:首先打开脚本文件;然后通过【INSERT INTO tablename (col_name, col_date) VALUE ('DATE: Auto CURDATE()',CURDATE())】命令插入日期。创建动态的现代网站必须使用数据库,而MySQL可以...
  • MySQL批量插入大量数据方法

    千次阅读 2021-01-18 18:35:54
    MySQL数据库中,如果要插入上百万级的记录,用普通的insert into来操作非常不现实,速度慢人力成本高,推荐使用LoadData或存储过程来导入数据,我总结了一些方法分享如下,主要基于MyISAM和InnoDB引擎。...
  • mysql关联插入

    千次阅读 2018-05-24 15:23:31
    1、关联插入(直接从TableB取数据插入TableA)INSERT INTO tableA (Xpid,Bid,Proid)SELECT ID, Bid,Proid FROM tableBWHERE Bid=1;2、关联插入(直接从TableB取数据插入TableA另外加有一个固定的字段) INSERT INTO ...
  • Mysql循环插入数据

    千次阅读 2019-05-30 18:31:58
    接下来开始循环插入三种操作 说明:首先需要设置delimiter。delimiter的作用:告诉解释器,这段命令是否已经结束了,mysql是否可以执行了 默认情况下,delimiter是‘;’但是当我们编写procedure时,如果是默认...
  • mysql数据库插入json数据

    千次阅读 2020-11-22 17:56:49
    存入MySQL数据库final 单词园地: json是一种常用的,数据格式,如何存储到MySQL数据库中呢 了解一种数据类型blob 1.blob 类型 BLOB (binary large object)----二进制大对象,是一个可以存储二进制文件的容器。在...
  • MySQL插入特殊字符

    千次阅读 2021-01-18 21:12:00
    有时候在插入字符的时候,经常会发现',"很难插进去。在MYSQL里用就OK了。举例如下:mysql> create table new (name varchar(200));Query OK, 0 rows affected (0.00 sec)mysql> insert into new values('wt's ...
  • MySQL插入数据

    千次阅读 2021-02-06 23:52:45
    MySQL 插入数据MySQL 表中使用 INSERT INTO SQL语句来插入数据。你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。语法以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法...
  • MySQL批量插入1000条数据

    千次阅读 2021-01-19 06:39:48
    create PROCEDURE 批量插入1000条数据()BEGINDECLARE i int;set i = 1;WHILE i < 120 DOinsert into `1000`(user,password) values(concat("UU",i),concat("PWD",i));set i = i+1;END WHILE;END//***************...
  • MySQL实现循环插入功能

    千次阅读 2021-01-19 06:04:13
    MySQL 不支持直接写SQL 语句实现循环插入功能. 想要实现该功能的方法有:用其他语言操控MySql或者用存储过程来实现两种。MySQL 不支持直接写SQL 语句实现循环插入功能. 想要实现该功能的方法有:用其他语言操控MySql...
  • MySql存储过程动态创建表并插入数据

    万次阅读 热门讨论 2015-07-31 20:45:54
    MySql存储过程动态创建表并插入数据  最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小...
  • 这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入。      图2 上图是我们整个表的概况。下面我们就用程序来总结出这样的一个表格是怎么实现的。 ''' function description : Add...
  • Mysql 批量插入数据 提前获得主键id

    千次阅读 2021-03-14 19:47:21
    最近在做分销功能的按组分销模块时,一次需要插入一万多条数据,同时还需要获得插入数据的主键 id ,用于后续逻辑的使用。最初我是通过循环,一条一条的插入,然后一边插入,一边执行数据更新。这种方式,慢到自己都...
  • Mysql插入优化

    千次阅读 2019-05-19 13:08:11
    Mysql批量插入事务插入性能对比。对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。因此,优化数据库...
  • MySQL插入数据的三种方法

    万次阅读 2021-07-26 16:49:00
    Mysql 插入数据 1、mysql中常用的三种插入数据的方法 insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错。 replace into:替换数据。插入时,如果表中已经存在相同的...
  • golang mysql批量插入实例

    千次阅读 2021-01-25 17:34:42
    所以先想能不能加快mysql的处理流程,可以定时批量插入代替及时插入。 思路: 1.接收tcp消息,通多channel发送到临时的切片。 2.定时任务,定时将临时切片的数据批量插入mysql。 知识点: 1.channel来接收...
  • Mysql插入数据语句

    千次阅读 2021-01-18 18:26:39
    mysql中insert into、insert into ... set ...、insert ignore into、replace into都是插入数据的语句。insert into 的 SQL语法:添加一行数据(如果数据时字符型,需要加上单/双引号)INSERT INTO table_name ...
  • MySql批量插入语句(INSERT)

    万次阅读 2021-03-18 18:39:31
    这里写自定义目录标题欢迎使用Markdown编辑器创建数据库新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容...
  • MySQL中如何插入数据

    万次阅读 多人点赞 2020-05-09 21:52:13
    插入数据1数据插入2插入完整行3插入多个行4插入检索出的数据 1数据插入 INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用: 插入完整的行; 插入行的一部分; 插入多行; 插入某些查询的结果。 ...
  • Mysql 插入数据 1、插入数据方法 mysql中常用的三种插入数据的语句: insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错; replace into:表示插入并替换数据,若表中有...
  • mysql插入(记录)变量,C/C++连接mysql插入一条数据(记录)、Mysql

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 611,537
精华内容 244,614
关键字:

mysql动态插入

mysql 订阅