Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
Если это возможно конечно.

Есть куча данных которые нужно внести в базу. Формат скрипта следующий:

insert into table [username].[tablename]
values ('00', '11')
values ('11', '22')
values ('11', '22')
...
values ('11', '22')
go

Если я его запускаю в таком виде через osql, выдается сообщение об ошибке синтаксиса. Все работает если исправить его так:

insert into [username].[tablename] values ('00', '11')
insert into [username].[tablename] values ('11', '22')
insert into [username].[tablename] values ('11', '22')
...
insert into [username].[tablename] values ('11', '22')
go


Мне кажется выполнение insertов таким образом не очень эффективно. Подскажите ниболее грамотный способ залить данные из этого файла в базу pls!
26 май 05, 10:21    [1571846]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
insert into ...
select ...
union all
select ...
26 май 05, 10:24    [1571863]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Paul Sacks
Member

Откуда:
Сообщений: 1105
Сходите на WWW.SQL-EX.RU
26 май 05, 10:27    [1571879]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
Мне неоткуда делать SELECT. Есть файл с данными (в ввиде скрипта):

insert into table [username].[tablename]
values ('00', '11')
values ('11', '22')
values ('11', '22')
...
values ('11', '22')
go

Стоит задача закинуть эти данные в базу.
26 май 05, 10:29    [1571893]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Jo22
Мне неоткуда делать SELECT. Есть файл с данными (в ввиде скрипта):

insert into table [username].[tablename]
values ('00', '11')
values ('11', '22')
values ('11', '22')
...
values ('11', '22')
go

Стоит задача закинуть эти данные в базу.
Ну, и чо париться - открой это скрипт в QA и запусти на выполнение.
26 май 05, 10:31    [1571900]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Тогда вставьте insert into table [username].[tablename] в каждую вторую строчку, начиная с третьей - это самое просто, что можно сделать. И, скорее всего, не средствами сервера. Потому как скрипт, пока, к срверу имеет мало отношения.
З.Ы. Откуда он такой красивый взялся?
26 май 05, 10:32    [1571903]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
tpg
Jo22
Мне неоткуда делать SELECT. Есть файл с данными (в ввиде скрипта):

insert into table [username].[tablename]
values ('00', '11')
values ('11', '22')
values ('11', '22')
...
values ('11', '22')
go

Стоит задача закинуть эти данные в базу.
Ну, и чо париться - открой это скрипт в QA и запусти на выполнение.

Ну дык скрипт - кривой. :)
26 май 05, 10:32    [1571910]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
Я так и делаю, просто я думал есть способ вставить кучу строк одним инсертом :(
26 май 05, 10:34    [1571926]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Jo22
Я так и делаю, просто я думал есть способ вставить кучу строк одним инсертом :(

Кучу строк можно. Если эта куча в нормальном виде.
Знаете, ведь в скрипт можно было загнать что-то типа values ('ноль-ноль', 'одиннадцать') и удивляться, чегой-то сервер этого не понимает и в цифры не переводит, негодяй.
26 май 05, 10:37    [1571939]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Гавриленко Сергей Алексеевич
tpg
Jo22
Мне неоткуда делать SELECT. Есть файл с данными (в ввиде скрипта):

insert into table [username].[tablename]
values ('00', '11')
values ('11', '22')
values ('11', '22')
...
values ('11', '22')
go

Стоит задача закинуть эти данные в базу.
Ну, и чо париться - открой это скрипт в QA и запусти на выполнение.

Ну дык скрипт - кривой. :)
Упс... не заметил.
В QA есть возможность сделать замену CTRL+H. Вот и замени
values (
на
insert into [username].[tablename] values (
26 май 05, 10:37    [1571941]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jo22
Я так и делаю, просто я думал есть способ вставить кучу строк одним инсертом :(

Не так сказали же

insert into table [username].[tablename]
select '00', '11'
union all select '11', '22'
union all select '11', '22'
...
union all select '11', '22'
26 май 05, 10:37    [1571946]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Paul Sacks
Member

Откуда:
Сообщений: 1105
И так работает
Create Table #Table1 (field1 Integer, field2 Integer)

Insert Into #Table1 
Select 1,2
Union All 
Select 2,3
UNION ALL
Select 4,5

Select *From #Table1
26 май 05, 10:43    [1571973]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
Paul Sacks
И так работает
Create Table #Table1 (field1 Integer, field2 Integer)

Insert Into #Table1 
Select 1,2
Union All 
Select 2,3
UNION ALL
Select 4,5

Select *From #Table1



Не работает ( Вылетает с сообщением что стек закончился (использую osql). Похоже это не для большой заливки данных. У меня около 150000 строк. Подскажите куда рыть, чтобы залить этот гребынный файл, плиз?!!

Вот кусок из него:

insert into table [PremCalcUser].[RateBase]
values (200,'01','HOM','HMN','BLDG','BLDG','P','2001-09-15','2000-06-12',1,'2001-11-04','2000-06-12',0,0.00,0,0.00,0,0.00000,'N',0.00,'CHAR','RTAREA1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AREA CODE','N','Y','Y',1.00000,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0.00,0.00,NULL,0.00,0.00,'E',1.00)
values (200,'01','HOM','HMN','BLDG','BLDG','P','2001-09-15','2000-06-12',2,'2001-11-04','2000-06-12',0,0.00,0,0.00,0,0.00000,NULL,0.00,'CHAR','HOOLDINSR',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AGE OF INSURED',NULL,NULL,NULL,0.00000,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0.00,0.00,NULL,0.00,0.00,NULL,0.00)
27 май 05, 04:18    [1574683]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
Кучей инсертов это тоже не работает нормально, слишком много строк. Если пользоваться bcp, эта прога сможет загнать данные в существующую таблицу с кучей столбцев разного типа?
27 май 05, 04:32    [1574686]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Jo22
Кучей инсертов это тоже не работает нормально, слишком много строк.
А какое сообщение об ошибке?
27 май 05, 06:32    [1574716]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
VladRUS.ca
Member

Откуда: Toronto
Сообщений: 1172
Jo22
Подскажите куда рыть, чтобы залить этот гребынный файл, плиз?!!

Ещё один вопрос: это разовая задача или Вам нужно будет этим постояно заниматься?
27 май 05, 07:22    [1574747]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
tpg
Jo22
Кучей инсертов это тоже не работает нормально, слишком много строк.
А какое сообщение об ошибке?


Вставка строк шла слишком долго (еще бы, куча трнзакций, лог рос быстро),
я все оставил на ночь. Когда пришел утром, osql выпал с сообщением, что соединение с сервером было разорвано. Конкретно уже не скажу к сожалению.
27 май 05, 07:39    [1574754]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Jo22
Guest
VladRUS.ca
Jo22
Подскажите куда рыть, чтобы залить этот гребынный файл, плиз?!!

Ещё один вопрос: это разовая задача или Вам нужно будет этим постояно заниматься?


Это будет постоянная заливка больших обьемов данных - каждую неделю примерно. Но формат файла который я должен заливать вряд ли изменится и нужно как то автоматизировать его заливку в таблицу.
27 май 05, 08:27    [1574824]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Садовод
Member

Откуда:
Сообщений: 36
Может быть, стоит посмотреть в сторону BULK INSERT?
27 май 05, 08:30    [1574829]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить много строк одним insertом в SQL2000  [new]
Glory
Member

Откуда:
Сообщений: 104760
Jo22
tpg
Jo22
Кучей инсертов это тоже не работает нормально, слишком много строк.
А какое сообщение об ошибке?


Вставка строк шла слишком долго (еще бы, куча трнзакций, лог рос быстро),
я все оставил на ночь. Когда пришел утром, osql выпал с сообщением, что соединение с сервером было разорвано. Конкретно уже не скажу к сожалению.

У сервера есть ограничения на длину выполняемого пакета. Пакеты прилется разделять с помощью GO

Для массовой быстрой заливки большого количества записей существуеь команда BULK INSERT а также утилита bcp и DataTransformationServices
27 май 05, 10:23    [1575167]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить