`

MySql实现循环插入功能

阅读更多
MySql 不支持直接写SQL 语句实现循环插入功能. 想要实现该功能的方法有:用其他语言操控MySql或者用存储过程来实现两种。
1、存储过程实现
A、表结构 (Create Table song)
------ ----------------------------------------------------------------------------------------
  CREATE TABLE `song` (
          `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Autoincreament element',
          `name` text NOT NULL,
          `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
          `rank` int(11) NOT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=MyISAM AUTO_INCREMENT=8102001 DEFAULT CHARSET=gbk

B、定义存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`sp_insert_batch`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_batch`(IN number int(11))
BEGIN
  declare i int(11);
  set i = 1;
  -- such as 1-2000,2000-4000,....
  WHILE i <= number DO
    if mod(i,2000)=1 then
       set @sqltext =concat('(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')');
    elseif mod(i,2000)=0 then
       set @sqltext=concat(@sqltext,',(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')');
       set @sqltext=concat('insert into song (name,datetime,rank) values',@sqltext);
       prepare stmt from @sqltext;
       execute stmt;
       DEALLOCATE PREPARE stmt;
       set @sqltext='';
    else
       set @sqltext=concat(@sqltext,',(''',concat('t',i),''',''',now(),''',',ceil(10*rand()),')');
    end if;
    set i = i + 1;
  END WHILE;
  -- process when number is not be moded by 2000
  -- such as 2001,4002,15200,...
  if @sqltext<>'' then
     set @sqltext=concat('insert into song (name,datetime,rank) values',@sqltext);
     prepare stmt from @sqltext;
     execute stmt;
     DEALLOCATE PREPARE stmt;
     set @sqltext='';
  end if;
END$$
DELIMITER ;
C、调用存储过程
call sp_insert_batch (100); --参数为需要插入的行数
2、用其他语言操控MySql实现(以shell为例)
for ((i=1;i<=1000;i++));
do `mysql test -e "insert into t1(idx,pw) value($i,md5($i));"`;
done
分享到:
评论

相关推荐

    往mysql循环插入几千万条数据

    做测试时,到mysql数据库循环插入千万条数据的java代码

    Mybatis 3+Mysql 实现批量插入

    本文将深入探讨如何利用MyBatis框架结合MySQL数据库实现批量插入功能,包括其原理、配置、代码实现以及优化策略。 ### 一、MyBatis框架简介 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级...

    MySQL循环插入千万级数据

    1、创建测试表 CREATE TABLE `mysql_genarate` ( `id` int(11) NOT NULL AUTO_...2、创建一个循环插入的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `test_two1`( ) BEGIN DECLARE i INT DEFAU

    mysql 批量插入测试数据

    mysql 批量插入测试数据 ,可判断条件插入数据,随心所遇插入,do where 循环

    mysql循环添加数据(存储详细)

    接下来,我们将为每个表创建一个对应的存储过程,用于实现循环插入数据的功能。 #### 1. 存储过程 - MyISAM ```sql DELIMITER @ CREATE PROCEDURE insert_isam(IN item INTEGER) BEGIN DECLARE counter INT; SET...

    MySQL实现创建存储过程并循环添加记录的方法

    以下将详细解释如何在MySQL中实现这一功能。 首先,我们需要了解存储过程的基本创建方法。在MySQL中,我们使用`CREATE PROCEDURE`语句来定义一个存储过程。在给定的示例中,创建了一个名为`myproc`的存储过程: ``...

    PHP+mysql功能实现BBS基本功能

    - **分页显示**:在大量数据的场景下,如帖子列表,通常会实现分页功能,通过`LIMIT`和`OFFSET`在SQL中实现。 7. **其他高级特性** - **缓存机制**:使用Redis或Memcached缓存热门数据,减少数据库压力。 - **...

    javaweb mysql实现分页功能

    在这个例子中,我们将使用MySQL数据库来实现这一功能。 首先,我们要了解分页的基本原理。分页通常通过两个参数实现:当前页数(Page Number)和每页显示的条目数(PageSize)。通过这两个参数,我们可以计算出查询...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    使用存储过程实现循环插入100条记录

    本话题将详细讲解如何利用存储过程实现循环插入100条记录,这对于批量数据处理非常实用,特别是在MySQL数据库中。 首先,我们来看一下给出的示例代码: ```sql mysql&gt; delimiter $$ // 更改分隔符,避免与存储过程...

    88秒插入1000万条数据到MySQL数据库表的操作方法

    其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 &gt; ...

    html+php+mysql留言板功能的实现

    在本文中,我们将深入探讨如何使用HTML、PHP和MySQL实现一个功能完备的留言板系统,包括查看、增加和删除留言的功能,并解决中文乱码问题。这是一个常见的Web开发应用场景,对于初学者和进阶开发者来说,都是一个很...

    Java实现批量向mysql写入数据的方法

    通过使用JDBC,可以实现这些基本操作,例如在本文中,我们使用了insert into语句向mysql数据库中插入数据。 4. Java语言中的时间处理:在本文中,我们使用了SimpleDateFormat类来处理时间信息,例如获取当前时间的...

    mysql游标实现到了最后一个结束之后结束循环

    这篇博客文章“mysql游标实现到了最后一个结束之后结束循环”可能详细介绍了如何在MySQL中使用游标来处理数据,以及如何在循环结束时正确地关闭游标,防止资源浪费。 在MySQL中,游标的使用通常包括以下步骤: 1. ...

    php+mysql实现新闻系统

    首先,让我们深入理解这个系统的功能和实现过程。 1. **PHP基础**:PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发。要创建新闻系统,开发者需要熟悉PHP语法、变量、数据类型、流程控制(如条件语句和循环...

    mysql数据插入效率比较

    1. 单条插入:这是最基本的方式,通过for循环逐条执行INSERT语句。这种方式的效率最低,因为每次插入都需要建立和维护数据库连接,产生的IO和网络开销最大。 2. 批量插入:将多条INSERT语句合并成一个大的SQL语句,...

    基于Python MySQL实现快递包装循环利用系统.zip

    《基于Python MySQL实现快递包装循环利用系统》是一个综合性的IT项目,主要涵盖了Python编程语言、MySQL数据库管理和系统设计等核心知识点。该项目旨在构建一个能够有效管理快递包装的循环利用平台,提高资源利用率...

    MySQL循环语句之while循环测试

    // 循环内操作,如插入数据 SET i = i + 1; // 更新变量i的值 END WHILE; // 结束WHILE循环 END $$ // 结束定义语句 CALL wk(); // 调用存储过程 DELIMITER ; // 恢复默认的结束符; ``` 在这个例子中,`WHILE`...

    mysql大批量插入数据的4种方法示例

    **方法一:循环插入** 这是最基本的方法,适合数据量较小的情况。通过循环遍历数据,逐条执行SQL插入语句。然而,这种方法效率较低,因为每次插入都会产生一次网络通信,消耗数据库连接资源。 **方法二:拼接SQL...

    shell的多线程&当前文件夹下批量插入MySQL

    本文将详细讲解如何在Shell脚本中实现多线程,并结合实例介绍如何批量插入MySQL数据库。 首先,我们需要理解为什么要使用多线程。在处理大量并发任务时,多线程可以并发执行任务,避免串行执行的低效,尤其在需要对...

Global site tag (gtag.js) - Google Analytics