добаление кучи строк - цикл ?
От: Аноним  
Дата: 18.02.05 03:24
Оценка:
Я в SQL не силен, только учусь, поэтому наверное глупый вопрос.
Есть табличка из трех колонок:
С1 (varchar(6), ключ), C2 (varchar(10)), C3(smalldatetime).

Надо добавить в таблицу 100000 строк со значениями:
С1 от 100000 до 199999,
С2 пустая строка
С3 сегодняшняя дата.

Для этого нужен цикл (если да,то как он выглядит?), или есть оператор позволяющий это сделать ?
Буду благодарен за помощь.
Re: добаление кучи строк - цикл ?
От: Vodyamba Россия  
Дата: 18.02.05 04:02
Оценка: :))
Здравствуйте, <Аноним>, Вы писали:

А>Я в SQL не силен, только учусь, поэтому наверное глупый вопрос.

А>Есть табличка из трех колонок:
А>С1 (varchar(6), ключ), C2 (varchar(10)), C3(smalldatetime).

А>Надо добавить в таблицу 100000 строк со значениями:

А>С1 от 100000 до 199999,
А>С2 пустая строка
А>С3 сегодняшняя дата.

А>Для этого нужен цикл (если да,то как он выглядит?), или есть оператор позволяющий это сделать ?

А>Буду благодарен за помощь.

Элементарно... цикл это основы... любого языка...

Основных циклов 3

1. For i:=1 to 100000 do ТВОЙ_ОПЕРАТОР

2. While i<>100000 do ТВОЙ_ОПЕРАТОР

3. Repeat ТВОЙ_ОПЕРАТОР Until i=100000
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: добаление кучи строк - цикл ?
От: Sinclair Россия https://github.com/evilguest/
Дата: 18.02.05 04:44
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Есть табличка из трех колонок:

А>С1 (varchar(6), ключ), C2 (varchar(10)), C3(smalldatetime).

А>Надо добавить в таблицу 100000 строк со значениями:

А>С1 от 100000 до 199999,
А>С2 пустая строка
А>С3 сегодняшняя дата.

А>Для этого нужен цикл (если да,то как он выглядит?), или есть оператор позволяющий это сделать ?

А>Буду благодарен за помощь.
Ну все зависит от языка. Если ты пользуешься MS SQL, то можно выполнить такой скрипт:

declare @i int
set @i=100000
while @i<200000 
begin
  insert into table1(c1, c2, c3) values(@i, '', getdate())
end
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: добаление кучи строк - цикл ?
От: Mavus Россия  
Дата: 18.02.05 07:33
Оценка: 30 (1)
А>>С1 (varchar(6), ключ), C2 (varchar(10)), C3(smalldatetime).
S>Ну все зависит от языка. Если ты пользуешься MS SQL, то можно выполнить такой скрипт:
S>
S>declare @i int
S>set @i=100000
S>while @i<200000 
S>begin
S>  insert into table1(c1, c2, c3) values(@i, '', getdate())
S>end
S>

Уважаемый начинающий, если будешь использовать этот скрипт — не забудь о преобразовании типа int в свой varchar(6):
insert into table1(c1, c2, c3) values(convert(varchar(6),@i), '', getdate())
Re: добаление кучи строк - цикл ?
От: Softwarer http://softwarer.ru
Дата: 18.02.05 07:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Для этого нужен цикл (если да,то как он выглядит?), или есть оператор позволяющий это сделать ?


Зависит от конкретного сервера. Я бы, например, сделал так:

insert into MyTable (c1, c2, c3)
  select 99999 + rownum, '', sysdate
  from dba_objects, dba_objects
  where rownum <= 100000;
Re: добаление кучи строк - цикл ?
От: gavrilenko_s  
Дата: 18.02.05 08:05
Оценка:
Здравствуйте, Аноним, Вы писали:

Можно и без.
declare @mul table (i int)
insert @mul
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
union all
select 0

insert table1(c1, c2, c3)
select cast(100000 + a.i + b.i *10 + c.i *100 + d.i * 1000  + e.i * 10000 as varchar(6)), '', getdate()
from @mul a
cross join @mul b 
cross join @mul c 
cross join @mul d 
cross join @mul e 
order by num
Re[2]: добаление кучи строк - цикл ?
От: gavrilenko_s  
Дата: 18.02.05 08:07
Оценка:
Здравствуйте, gavrilenko_s, Вы писали:

_>Можно и без.


_>select cast(100000 + a.i + b.i *10 + c.i *100 + d.i * 1000 + e.i * 10000 as varchar(6)), '', getdate()

_>from @mul a
_>cross join @mul b
_>cross join @mul c
_>cross join @mul d
_>cross join @mul e
_>order by num
_>[/sql]
order by убрать, использовал для отладки
Re[3]: добаление кучи строк - цикл ?
От: Аноним  
Дата: 18.02.05 11:01
Оценка: 30 (1)
Здравствуйте, Mavus, Вы писали:

А>>>С1 (varchar(6), ключ), C2 (varchar(10)), C3(smalldatetime).

S>>Ну все зависит от языка. Если ты пользуешься MS SQL, то можно выполнить такой скрипт:
S>>
S>>declare @i int
S>>set @i=100000
S>>while @i<200000 
S>>begin
S>>  insert into table1(c1, c2, c3) values(@i, '', getdate())
S>>end
S>>

M>Уважаемый начинающий, если будешь использовать этот скрипт — не забудь о преобразовании типа int в свой varchar(6):
M>
M>insert into table1(c1, c2, c3) values(convert(varchar(6),@i), '', getdate())
M>

и о приращении @i
Re[3]: добаление кучи строк - цикл ?
От: beroal Украина  
Дата: 18.02.05 17:47
Оценка:
Здравствуйте, gavrilenko_s, Вы писали:
по-настоящему красивый способ — использовать степени двойки, а не десятки. и на каждом шаге получать новый запрос с количеством строк, возведённым в квадрат путём авто-join-а предыдущего запроса. я привёл не реальные запросы, а идею:
create view s<i+1> (x) as
select s1.x + s2.x * (2^i) from s<i> as s1, s<i> as s2

каждый view s<i> имеет 2^(2^i) строк
начинаем с s0, в котором 2 строки:
create view s0 (x) as
select 0 union all select 1

для того, чтобы сгенерировать i=5: 2^(2^i) = 2^(2^5) = 2^32 ~ 4 миллиарда строк, достаточно всего лишь i+1 = 5+1 = 6 запросов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.