2009-11-03 120 views
1

我有一些情况需要编写多行相同的值来设置一些表。假设我必须添加120行,并填充两列。我正在寻找一个快捷方式,而不是将Insert行重复n次。这个怎么做?要多次执行的SQL命令?

+1

你可以简单地把你的插入语句放入一些while循环吗? – 2009-11-03 03:22:43

+0

我可以,但我会在VB中做这件事,并认为最好避免发送回到服务器。有没有在SQL 2005中做sp循环? – Alex 2009-11-03 04:59:52

回答

0

将这些值放入未使用的表中以保持安全。从那里你可以从这个表格插入你需要设置的表格。

1

如何

Insert Table(colsnames) 
Select Top 120 @value1, @Value2, etc. 
From AnyTableWithMoreThan120Rows 

只需确保类型的@Value列表中的值的colNames匹配列表

+0

大多数系统表都会有足够的行。 – 2009-11-03 03:46:27

+0

但我在表中没有这些值。为他们创建一个表将破坏目的 – Alex 2009-11-03 04:21:08

+0

插入没有从表中获取数据,它只是使用表来获得定义数量的行。 select子句应该只包含对传入的参数值的引用。就像如果你执行了[从tablewith1000Rows中选择'MyName'],你将得到1000行'MyName',并且表中没有数据。 – 2009-11-03 14:12:56

1

怎么样

insert into tbl1 
(col1,col2) 
(select top 120 @value1,@value2 from tbl2) 

如果SQL Server 2008中 。 SQL Server 2008中的新增功能可以在单个查询中向表中插入多行。

insert into tbl1 
(col1,col2) 
values 
(@value1,@value2),(@value1,@value2),.....(@value1,@value2) 
0
  1. 创建与您的数据的Excel电子表格。
  2. 将speadsheet导入到Sql Server中。
1

在SQL Server Management Studio中,您可以使用 “GO” 的关键字与参数:

INSERT INTO YourTable(col1, col2, ...., colN) 
VALUES(1, 'test', ....., 25) 
GO 120 

但是,这只能在管理工作室(这不是一个适当的T-SQL命令 - 这是一个Mgmt Studio命令字)。

马克

0

你甚至可以像这样(只是一个例子)

declare @tbl table(col1 varchar(20),col2 varchar(20)) 
; with generateRows_cte as 
(
    select 
     1 as MyRows 

     union all 
     select 
      MyRows+1 

     from generateRows_cte 
     where MyRows < 120 
) 
insert into @tbl(col1,col2) 
select 
'col1' + CAST(MyRows as varchar),'col2' + CAST(MyRows as varchar) 
from generateRows_cte OPTION (MAXRECURSION 0) 
select * from @tbl 

注尝试: - 为什么你不与批量插入到试图从SqlServer的数据集?我没有注意到你也有前端(VB)!

+0

像查尔斯的解决方案,但也许更好,因为在飞行中创建表。我喜欢它。谢谢。 – Alex 2009-11-04 17:23:12

+0

即使您可以借助SYS.COLUMNS,master..spt_values等一些系统表的帮助来完成您的任务 – 2009-11-05 03:40:37