日期:2014-05-18  浏览次数:20585 次

如何一次向数据库中插入多条数据
我想问下,就是假设我数据库中的表aa有8个字段,但是我一次就有100条数据要往里插,只能调用100次insert语句吗?

------解决方案--------------------
SQL code

insert into aa(A,B) 
select 'a','b'
union all
select 'c','d'
.......

------解决方案--------------------
SQL code

insert into aa 
select c1,c2,c3,c4,c5,c6,c7,c8 union all
select c1,c2,c3,c4,c5,c6,c7,c8 union all
select c1,c2,c3,c4,c5,c6,c7,c8 union all
......
select c1,c2,c3,c4,c5,c6,c7,c8

------解决方案--------------------
如果数据可以通过SELECT语句选取,可以SELECT ... INTO Tablename 来直接插入
如果数据在系统中有文件存储可以通过SQL Server 的导入导出功能将数据导入到指定表中
若果以上都没有,INSERT INTO tablename VALUES (,,,),(,,,),...
------解决方案--------------------
你随便找一个表,只要记录大于100的

insert into XXX
select top 100 @a,@b,@c,@d from table1

------解决方案--------------------
探讨
如果有100条数据,那代码行数不就是100行,我是把要存的数据都存在一个数组中了,有没有可以不用写这么多行代码的方法?谢谢你们的回答,这个比一条一条的插好多了!

------解决方案--------------------
当然你也可以用你的数组生成 insert 拼接的SQL语法,保存为SQL文件,再到数据库调用下。
------解决方案--------------------
探讨
还有个问题,我向数据库存储,如果有一个数据为空,我是往里存""(空)好呢,还是存null好?这些的存的数据,我以后还要取的。

------解决方案--------------------
探讨

还有个问题,我向数据库存储,如果有一个数据为空,我是往里存""(空)好呢,还是存null好?这些的存的数据,我以后还要取的。

------解决方案--------------------
探讨

哦,那我存成"",那么这个字段我定义成什么类型呢?varchar(10),如果这个字段有数据最大也是10个字节。

------解决方案--------------------
Insert Into AA
Select C1, C2, C3, C4, C5, C6, C7, C8
Union
Select C1, C2, C3, C4, C5, C6, C7, C8
Union
……
Select C1, C2, C3, C4, C5, C6, C7, C8