Как вставить n записей в таблицу одной командой - PullRequest
3 голосов
/ 28 февраля 2012

Я хочу вставить 10000 записей в таблицу, и в настоящее время я пишу этот код на сервере sql 2005

declare @n decimal(10,0);
set @n = 0;
while ( @n < 10000)
begin
   insert into table1 values (@n+1)
   set @n = @n + 1
end

в приведенном выше коде команда вставки выполняет 10000 раз, если существует какая-либо отдельная команда, чтобы сделать это.

Ответы [ 3 ]

5 голосов
/ 28 февраля 2012

Также вы можете использовать объекты sys в своих интересах:

INSERT INTO table1(n)
SELECT TOP 10000 ROW_NUMBER() OVER(ORDER BY a.object_id) AS n FROM sys.objects a CROSS JOIN sys.objects b
GO
4 голосов
/ 28 февраля 2012

Вы можете использовать CTE для создания таблицы в памяти из 10000 элементов и использовать ее для вставки в вашу фактическую таблицу.

;WITH q (n) AS (
   SELECT 1
   UNION ALL
   SELECT n + 1
   FROM   q
   WHERE  n < 10000
)
INSERT INTO table1 
SELECT * FROM q
OPTION (MAXRECURSION 0)
0 голосов
/ 28 февраля 2012

Быстрый способ (от ЗДЕСЬ ):

declare @t table (number int)
insert into @t 
    select 0
    union all
    select 1
    union all
    select 2
    union all
    select 3
    union all
    select 4
    union all
    select 5
    union all
    select 6
    union all
    select 7
    union all
    select 8
    union all
    select 9

insert into numbers
    select
        t1.number + t2.number*10 + t3.number*100
    from
        @t as t1, 
        @t as t2,
        @t as t3
...