mysql 执行大量insert语句
来源:互联网 发布:resnet网络结构全貌 编辑:程序博客网 时间:2024/05/12 01:58
从其他地方拿到一些数据,形如:
INSERT INTO `alarm`(`id`,`ALARMKEY`,`ALARMNE`,`ALARMSOURCE`,`OPERATEOBJ`,`ALARMTYPEDEFINE`,`ALARMLEVEL`,`PATHNAME`,`SERVICEID`,`OCCURDATE`,`CLEARDATE`,`CLEARUSER`,`CONFIRMDATE`,`CONFIRMUSER`,`REMARK`,`ALARMCONFIRMTYPE`,`ALARMCLEARTYPE`,`ISSHIELD`,`FIRSTTIME`,`ALARMTIMES`) VALUES ('2c9cc85244f8cdf20144fdaa693205e2', 'Mismerge', '\\ne=8', '\\ne=8\\pw=33619973', 'Y1731', '1', '5', 'bfd666', '\\pwt=1097', '2014-03-31 17:13:27', null, null, null, null, null, '0', '0', '\0', '2014-03-31 17:13:27', '1');
里面的数据至少有几万条。
如果直接一条一条执行
1、不能直接导入到MySQL客户端,直接死掉
2、耗费PC巨大的时间、空间
将insert语句组织成一下:
INSERT INTO `alarm`(`id`,`ALARMKEY`,`ALARMNE`,`ALARMSOURCE`,`OPERATEOBJ`,`ALARMTYPEDEFINE`,`ALARMLEVEL`,`PATHNAME`,`SERVICEID`,`OCCURDATE`,`CLEARDATE`,`CLEARUSER`,`CONFIRMDATE`,`CONFIRMUSER`,`REMARK`,`ALARMCONFIRMTYPE`,`ALARMCLEARTYPE`,`ISSHIELD`,`FIRSTTIME`,`ALARMTIMES`) VALUES ('2c9cc85244f8cdf20144fdaa693205e2', 'Mismerge', '\\ne=8', '\\ne=8\\pw=33619973', 'Y1731', '1', '5', 'bfd666', '\\pwt=1097', '2014-03-31 17:13:27', null, null, null, null, null, '0', '0', '\0', '2014-03-31 17:13:27', '1'), ('2c9cc85244f8cdf20144fdaa693205e2', 'Mismerge', '\\ne=8', '\\ne=8\\pw=33619973', 'Y1731', '1', '5', 'bfd666', '\\pwt=1097', '2014-03-31 17:13:27', null, null, null, null, null, '0', '0', '\0', '2014-03-31 17:13:27', '1'), ('2c9cc85244f8cdf20144fdaa693205e2', 'Mismerge', '\\ne=8', '\\ne=8\\pw=33619973', 'Y1731', '1', '5', 'bfd666', '\\pwt=1097', '2014-03-31 17:13:27', null, null, null, null, null, '0', '0', '\0', '2014-03-31 17:13:27', '1'), ('2c9cc85244f8cdf20144fdaa693205e2', 'Mismerge', '\\ne=8', '\\ne=8\\pw=33619973', 'Y1731', '1', '5', 'bfd666', '\\pwt=1097', '2014-03-31 17:13:27', null, null, null, null, null, '0', '0', '\0', '2014-03-31 17:13:27', '1'), ('2c9cc85244f8cdf20144fdaa693205e2', 'Mismerge', '\\ne=8', '\\ne=8\\pw=33619973', 'Y1731', '1', '5', 'bfd666', '\\pwt=1097', '2014-03-31 17:13:27', null, null, null, null, null, '0', '0', '\0', '2014-03-31 17:13:27', '1');
减少sql语句的编译次数,可以极大提高工作效率,试了一下,插入8000条数据不费劲。
==============================================================================================
还有一个办法,时间多个insert语句打包到一个事务里面:
START TRANSACTION; INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0); INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1); ... COMMIT;
通过使用事务可以减少数据库执行插入语句时多次“创建事务,提交事务”的消耗,所有插入都在执行后才进行提交操作。这个方法参考了:http://blog.csdn.net/tigernorth/article/details/8094277,还未考证。
==============================================================================================
问题又来了,将几万条数据组织到一起,一个SQL语句规模还是很庞大,导入到MySQL,呃:
注意事项:
1. SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packe配置可以修改,默认是1M。
2. 事务需要控制大小,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会日志会使用磁盘数据,这时,效率会有所下降。所以比较好的做法是,在事务大小达到配置项数据级前进行事务提交。
0 0
- mysql 执行大量insert语句
- 大量包含Insert语句的脚本文件批量执行导入数据
- MYSQL INSERT INTO语句
- MYSQL INSERT INTO语句
- mysql insert update语句
- MySQL insert update语句
- MySQL INSERT INTO语句
- Mysql insert语句
- MySQL,INSERT语句
- oracle 执行大量的sql语句
- MySQL的INSERT语句小结
- Mysql insert语句的优化
- MYSQL INSERT UPDATE DELETE 语句
- Mysql insert语句的优化
- Mysql insert语句的优化
- INSERT 语句 (For MySQL)
- MYSQL 执行Insert语句throws "The table 'xxx' is full" 的问题分析及解决办法
- jdbc连接mysql数据库执行insert语句后获取自增长的主键值
- 罪椎桩茁昨撰揍篆着酌纂桌着诅租自椎撰
- 锥赚紫鬃谆捉转踪爪揍撰追仔宗纵尊作子
- 自定义progressdialog,改善用户体验
- cocos2d-x学习笔记
- hdu 3836 Equivalent Sets
- mysql 执行大量insert语句
- java 大转盘摇奖算法
- c++ 读取位图信息显示位图 BITMAPINFOHEADER
- android TTS语音播放
- Android动画 fillAfter和fillBefore
- JAVA NIO 详解
- 福建机器人自动抛光机
- javascript基于原型的继承机制
- [安卓]2dx 转译集成了 uMeng 的 HelloWorld 项目到安卓