用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6428|回复: 8
收起左侧

这么批量插入数据

[复制链接]
发表于 2009-6-29 16:30:16 | 显示全部楼层 |阅读模式
在数据库中如何一次性写入多条记录?要求:不用循环
发表于 2009-6-29 16:48:23 | 显示全部楼层
SQL 语句能做到就能做到,否则就是做不到,呵呵。
 楼主| 发表于 2009-6-29 17:16:09 | 显示全部楼层
呵呵,我的意思是说用数据库的类来操作,该怎么写?
发表于 2009-6-29 18:44:12 | 显示全部楼层
AR 类貌似不支持批量写入数据。

AR 类就是一个 SQL 语句的简单封装,如果 AR 类支持,其内部也肯定是循环。
发表于 2009-6-30 02:52:57 | 显示全部楼层
mysql只能一条一条插,mssql可以用分号一次插多个
发表于 2009-6-30 09:00:38 | 显示全部楼层
首先为何实现时不能用循环?
类的实现当然是处理一条sql,在具体实现时,才采用循环。
将sql放入数组中,然后使用循环遍历,在循环内再使用类实现单个sql的实现。
这样即可实现多条sql语句一起执行的效果。(其实本质还是单个执行)
发表于 2011-5-30 11:44:45 | 显示全部楼层
据说只有循环。
发表于 2011-5-30 17:08:04 | 显示全部楼层
还要加事务!
发表于 2011-6-11 23:17:39 | 显示全部楼层
如果使用mysql可以循环数据,拼成sql语句:
insert into test(name) value('test1'),
('test2'),
('test3')
.......
('test2000');
这样可以批量插入,但是如果一性太多数据会把超时或内存不足,可以适当分批插入,如insert语句每次插入2000条,如果10万条数据,就分50次。这性程序是可以执行过来的。
再者如果是保存在xls的数据,可以转为csv格式的,通过mysql 的load data infile 函数操作,这很快,但数据库已存在几百万数据时,如果表有索引也会慢,如果没有索引,那速度还是很快的。

本版积分规则