如何实现这个sql

gfgen 2007-10-07 05:31:13
将一系列数据如(1,20,21,47,28,29.....)插入到一个表中,一个一个用insert 太慢了
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Generics 2007-10-07
  • 打赏
  • 举报
回复
所以要用bcp或者BULK INSERT来把大量数据放进表里. 当然啦, 也可以写程序实现.
gfgen 2007-10-07
  • 打赏
  • 举报
回复
前台有一个序列(1,20,29........)100000个数,如何将他们插入到数据表中,以上的两个存储过程不行啊,不过我还是谢谢了。
gfgen 2007-10-07
  • 打赏
  • 举报
回复
楼上的回答无法解决要插入的数量很大的情况,
INSERT TABLENAE SELECT ‘1’UNION ALL SELECT ‘2 '...................
如果要插入100000条记录,,sql语句太长无法运行
Generics 2007-10-07
  • 打赏
  • 举报
回复
数据不是很多的时候可以用这种方法, 数据太多, 就只能用bcp或者其他的一些bulk copy办法了.

declare @sql varchar(8000)
declare @value varchar(500)
set @value = '1,20,21,47,28,29'
set @sql = 'insert into tablename (id1) select ' + replace(@value, ',', ' union all select ')

exec (@sql)
Generics 2007-10-07
  • 打赏
  • 举报
回复
楼上的办法不错.
gfgen 2007-10-07
  • 打赏
  • 举报
回复
大概没说清楚,一个表就一个字段id int 现在想将将一些数据插入 ,如下
表table1
id
1
20
21
47
28
29

当然可以用
insert table1 (id) values (1)
insert table1 (id) values (20)
insert table1 (id) values (21)
insert table1 (id) values (47)
insert table1 (id) values (28)
insert table1 (id) values (29)
如果要插入的数据为100000个,就得执行100000次,考虑网络传递的延时,时间可能长达1-3分钟,
可否有其他语句来实现此结果,最好用一个或少量存储过程来完成。


fengming2222 2007-10-07
  • 打赏
  • 举报
回复
insert tablename select * from tablename2
或者
INSERT TABLENAE SELECT ‘1’UNION ALL SELECT ‘2'...................
hbzy123 2007-10-07
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
declare @value varchar(500)
set @value = '1,2,3,4,5,6,7,8'
set @sql = 'insert into tablename (id1) select ' + replace(@value,',',' union select ')
execute (@sql)
dongdong715 2007-10-07
  • 打赏
  • 举报
回复
你可以用文本直接导入

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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