mysql存储过程批量插入数据
‘壹’ 怎么用用mysql命令行快速插入一千条数据
先介绍一个关键字的使用:
delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MySQL的默认结束符为";"
如何通过mysql命令行批量插入100条数据呢,可以在代码里实现,也可以通过命令行,也就是通过存储过程:
[java] view plain
delimiter $$
create procere myproc ()
begin
declare num int ;
set num = 1 ;
while num < 100 do
insert into emp (id, `name`, sex)
values
('', concat("name", num), 1) ;
set num = num + 1 ;
end
while ;
‘贰’ mysql中如何批量插入数据
update 表名 set type=true where name>=1 and name <=100
‘叁’ 怎么写存储过程,向数据库中批量插入数据
用循环语句生成字段值insert
SQL 如下:
createprocereInsertTest
as
begin
declare@iint
declare@svarchar(20)
set@i=1
while@i<=100
begin
select@s=cast(@iASvarchar(20))
insertintotest(A,B,C,D)VALUES('a'+@s,'b'+@s,'ccccc','ddddd')
SET@i=@i+1
end
end
‘肆’ c#中往mysql里批量插入上万条数据,有比较高效的方法吗
首先, 插入上万条数据,对于数据库来说并不是“很大”的工作量,一般配置的笔记本电脑都可以在1分钟内完成。 所以最简单、最灵活的办法还是写SQL语句。
如果不希望DB编译器每次执行都编译SQL的话,可以使用存储过程,直接调用,性能上会好很多。也比较简单。
(几万条数据怎么地也得要时间去处理,所以不可能特别快的。)
如果由于各种原因,导致这个插入还是很慢, 而且你的MYSQL又是5.0以上版本的话,可以使用BulkCopy来进行批量操作。
BulkCopy的原理就是Client直接把一个数组(DataTable)传给DB,然后传入表名,所有的编译、操作都由DB自己完成,效率很高。
引用MySql.Data.dll , 调用MysqlBulkCopy函数即可。
这个函数在处理海量数据插入的时候效率尤为明显, 小量数据反而没什么优势,而且由于传入的DataTable格式必须和表的字段一模一样(空的列也要传进去),导致C#要写很多代码来构造这个数组,所以要你自己权衡用还是不用。
我在自己的电脑上批量插入一亿条数据,Insert写法大概需要1小时,BulkCopy大概只需要5分钟。
‘伍’ mysql存储过程怎样批量插入数据
一下代码运行通过:
delimiter$$;
createprocerelucia_proc16(countint)
begin
DECLAREname_procVARCHAR(20)CHARACTERSETutf8;
DECLAREsex_procVARCHAR(4)CHARACTERSETutf8;
DECLAREage_procINT(10);
DECLAREclass_procVARCHAR(20)CHARACTERSETutf8;
DECLAREAddr_procVARCHAR(50)CHARACTERSETutf8;
DECLAREiINT;
seti=1;
setsex_proc='女';
setage_proc=20;
setclass_proc='山治班';
setAddr_proc='北京市朝阳区';
whilei<countdo
setname_proc=CONCAT('露西亚',i);
insertintostudents(Name,Sex,age,class,Addr)values(name_proc,sex_proc,age_proc,class_proc,Addr_proc);
seti=i+1;
endwhile;
end
$$;
delimiter;
代码功能:
传入一个行数,控制插入多少条数据
运行效果:
‘陆’ mysql批量插入数据
不用INSERTINTO难不成用UPDATE,数据导入3000条貌似不多吧
你要这么一说,还真有点难度了,因为数据类型不一样,还不能用数组,貌似没有什么绝窍
不过你可以直接用EXCEL中的CONCATENATE()函数把你的数据转换成SQL输入语句
然后把这个输入语句脚本放到一个文件中,如Iinsert.sql
接着用类似下面的代码把这个脚本导入MYSQL执行
php">!$db->select_db('databasename')&&exit($db->error());//选择当前数据库
if(!file_exists("./insert.sql"))exit("载入"insert.sql"失败!");
$import_sql=file_get_contents("pms.sql",dirname(__FILE__));//打开SQL文件并读取
$explode=explode(";",$import_sql);
$cnt=count($explode);
for($i=0;$i<$cnt;$i++){
!$db->query($explode[$i])&&exit("导入数据表失败!");
}
echo"已建立数据表...<br><br> ";
‘柒’ MySQL实现创建存储过程并循环添加记录的方法
本文实例讲述了MySQL实现创建存储过程并循环添加记录的方法。分享给大家供大家参考,具体如下:
先创建,然后调用:
--
创建存储过程
DELIMITER;//
create
procere
myproc()
begin
declare
num
int;
set
num=1;
while
num
<=
24
do
insert
into
t_calendar_hour(hourlist)
values(num);
set
num=num+1;
end
while;
commit;
end;//
--
调用存储过程
CALL
myproc();
PS:这里再为大家推荐2款常用的sql在线工具供大家参考使用(包含SQL语句用法说明):
SQL在线压缩/格式化工具:
http://tools.jb51.net/code/sql_format_compress
SQL代码在线格式化美化工具:
http://tools.jb51.net/code/sqlcodeformat
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL存储过程技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》及《MySQL数据库锁相关技巧汇总》
希望本文所述对大家MySQL数据库计有所帮助。
‘捌’ 如何使用MySQL实现批量插入数据
用存储过程,写个循环给你个我以前写的看看
begin
declare i int;
declare b int;
declare c int;
set @i=2;
set @b=6;
set @c=0;
set @stmt = concat('insert into t_j_goods_name (id,`code`,`name`)
values(?,?,(select distinct `a` from sheet1 limit ?, 1))');
while @i<442 do
prepare s1 from @stmt;
execute s1 using @b,@i,@c;
deallocate prepare s1;
set @i=@i+1,@b=@b+1,@c=@c+1;
end while;
end
‘玖’ mysql批量插入测试数据问题
拜托,你这个是创建存储过程的语句,而不是执行的语句,执行要用下面的语句
CALL dowhile
‘拾’ mysql中能不能运行一次insert插入多条数据
可以:
这样就行了,给你举个例子:
INSERT INTO `mytest`.`hello` (
`id` ,
`name`
)
VALUES (
NULL , 'qq'
), (
NULL , 'ww'
), (
NULL , 'ee'
), (
NULL , 'rr'
), (
NULL , 'tt'
);