如何一次向数据库中插入多条数据

dpshui 2012-05-17 09:08:02
我想问下,就是假设我数据库中的表aa有8个字段,但是我一次就有100条数据要往里插,只能调用100次insert语句吗?
...全文
4964 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
东方项天 2013-05-28
  • 打赏
  • 举报
回复
通过变量传给SQl语句进行插入,如果循环插入的话只能插入第一条,这是怎么回事?????????
fengerfei2000 2012-05-18
  • 打赏
  • 举报
回复
你随便找一个表,只要记录大于100的比如table1表有1000条记录不管是什么表

insert into aa
select top 100 @c1,@c2,@c3,@c4,@c5,@c6,@c7,@c8 from table1

这样最简单。你也不用写很多union all语句。
Lyongt 2012-05-17
  • 打赏
  • 举报
回复
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
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

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

这个可以
dpshui 2012-05-17
  • 打赏
  • 举报
回复
哦,那我存成"",那么这个字段我定义成什么类型呢?varchar(10),如果这个字段有数据最大也是10个字节。
fengerfei2000 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

还有个问题,我向数据库存储,如果有一个数据为空,我是往里存""(空)好呢,还是存null好?这些的存的数据,我以后还要取的。
[/Quote]
你存""要好些。NULL在查询上面效率比较低的。
Felixzhaowenzhong 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
还有个问题,我向数据库存储,如果有一个数据为空,我是往里存""(空)好呢,还是存null好?这些的存的数据,我以后还要取的。
[/Quote]

""(空) 占用存储空间,NULL 不占用存储空间
dpshui 2012-05-17
  • 打赏
  • 举报
回复
还有个问题,我向数据库存储,如果有一个数据为空,我是往里存""(空)好呢,还是存null好?这些的存的数据,我以后还要取的。
AcHerat 元老 2012-05-17
  • 打赏
  • 举报
回复
当然你也可以用你的数组生成 insert 拼接的SQL语法,保存为SQL文件,再到数据库调用下。
ABCDEF 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
SQL code


insert into aa(A,B)
select 'a','b'
union all
select 'c','d'
.......
[/Quote]+++
天-笑 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
如果有100条数据,那代码行数不就是100行,我是把要存的数据都存在一个数组中了,有没有可以不用写这么多行代码的方法?谢谢你们的回答,这个比一条一条的插好多了!
[/Quote]

我这两个办法
1:把你数组中的数据 组织成xml 一次提交给数据库,数据库上建立存储过程,解析你提交的xml一次性入库
2:把你的insert 语句参数化 例如:insert into t(c1,c2...c8) values(?,?,?,?,?,?,?,?)
循环你的数组,每次变更参数提交 即可
fengerfei2000 2012-05-17
  • 打赏
  • 举报
回复
你随便找一个表,只要记录大于100的

insert into XXX
select top 100 @a,@b,@c,@d from table1
dpshui 2012-05-17
  • 打赏
  • 举报
回复
如果有100条数据,那代码行数不就是100行,我是把要存的数据都存在一个数组中了,有没有可以不用写这么多行代码的方法?谢谢你们的回答,这个比一条一条的插好多了!
孤独加百列 2012-05-17
  • 打赏
  • 举报
回复
如果数据可以通过SELECT语句选取,可以SELECT ... INTO Tablename 来直接插入
如果数据在系统中有文件存储可以通过SQL Server 的导入导出功能将数据导入到指定表中
若果以上都没有,INSERT INTO tablename VALUES (,,,),(,,,),...
天-笑 2012-05-17
  • 打赏
  • 举报
回复

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


SqlServer2008 2012-05-17
  • 打赏
  • 举报
回复

insert into aa(A,B)
select 'a','b'
union all
select 'c','d'
.......
dpshui 2012-05-17
  • 打赏
  • 举报
回复
insert into t(c1,c2...c8) values(?,?,?,?,?,?,?,?)
这个应该怎么给?赋值,如果采用这种方法,用for循环给?赋值,那么我想问下,插入数据的动作是执行了for的循环次数呢,还是一次?
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

这种方法应该插入动作只执行一次吧?
發糞塗牆 2012-05-17
  • 打赏
  • 举报
回复
针对你的问题,有以下的思路可以参考:
1、如果你那100条记录已经存在了,比如是txt、excel,那么用bcp插入即可。
2、如果存在,但是是数据库里面的一个表,或者多个表,那么你就用insert into aa(xx) select xx from 表。
3、如果有生成的规则,那么就要先生成再插入。插入这个动作只需要执行一次,但是value那个部分可以有多重方式。建议你看看insert的详细语法(联机丛书)。上面会有很多中使用方式的。
zczhangchao2003 2012-05-17
  • 打赏
  • 举报
回复
将要插入的这100条数据如果没啥规律的话,代码肯定不知道您要录入什么数据,所以肯定是100条插入语句
anzhiqiang_touzi 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
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


……
[/Quote]
加载更多回复(3)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧