Re[2]: Как быстро вставить данные в MS SQL 2000??
От: PavelT100 Россия  
Дата: 09.01.03 08:13
Оценка: 6 (1)
А еще есть такая мощная утилита "Import and Export Data". Работает очень быстро, может и код программный сгенерить на VB, если это надо. У меня 7 млн. записей заливает на сервер за 20-25 минут.
Как быстро вставить данные в MS SQL 2000??
От: Condor  
Дата: 08.01.03 10:15
Оценка:
Народ, нужен хелп по сабжу...
Я выполняю так:
1) Создание хранимой процедуры
@Var1 int
@Var2 int
INSERT INTO [Table] (Field1, Field2) VALUES(@Var1, @Var2)
2) Потом в цикле вызывается ф-ия SQLExecDirect("Name_of_Stored_Procedure")

выполняется ~0.8 сек.

Объем данных — 1000 записей в 1 сек.
Если кто знает как можно быстрее вставить, буду признателен
Re: Как быстро вставить данные в MS SQL 2000??
От: DMVB  
Дата: 08.01.03 10:19
Оценка:
а bcp использовать не получится?
Re: Как быстро вставить данные в MS SQL 2000??
От: TK Лес кывт.рф
Дата: 08.01.03 10:21
Оценка:
Здравствуйте, Condor, Вы писали:

удалено избыточное цитирование. _MM_

C>Объем данных — 1000 записей в 1 сек.

C>Если кто знает как можно быстрее вставить, буду признателен

Передавать в хранимую процедуру сразу 1000 записей в виде XML поля через text параметр.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Как быстро вставить данные в MS SQL 2000??
От: Merle Австрия http://rsdn.ru
Дата: 08.01.03 10:24
Оценка:
Здравствуйте, Condor, Вы писали:

C>Объем данных — 1000 записей в 1 сек.

C>Если кто знает как можно быстрее вставить, буду признателен

BULK INSERT
Copies a data file into a database table or view in a user-specified format.

Сначала подготавливаешь данные в нужном формате, а потом заливаешь в базу, на больших объемах выигрыш в разы.
Мы уже победили, просто это еще не так заметно...
Re[2]: Как быстро вставить данные в MS SQL 2000??
От: Condor  
Дата: 08.01.03 10:25
Оценка:
Здравствуйте, DMVB, Вы писали:

DMV>а bcp использовать не получится?


Так ведь bcp только из текстового файла можно делать, разве нет? А ежели каждую секунду писать на диск, то через неделю винт отпадет
Re[2]: Как быстро вставить данные в MS SQL 2000??
От: Condor  
Дата: 08.01.03 10:26
Оценка:
Здравствуйте, TK, Вы писали:

TK>Передавать в хранимую процедуру сразу 1000 записей в виде XML поля через text параметр.


оооо, похоже то что доктор прописал. А не мог бы ты скинуть примерчик на мыло condorz@mail.ru
Re[2]: Как быстро вставить данные в MS SQL 2000??
От: Condor  
Дата: 08.01.03 10:28
Оценка:
Здравствуйте, Merle, Вы писали:

M>BULK INSERT

M>Copies a data file into a database table or view in a user-specified format.

M>Сначала подготавливаешь данные в нужном формате, а потом заливаешь в базу, на больших объемах выигрыш в разы.


BULK INSERT тоже ведь по-моему только с винта может писать или из ОП тоже можно?
Re[3]: Как быстро вставить данные в MS SQL 2000??
От: TK Лес кывт.рф
Дата: 08.01.03 10:28
Оценка:
Здравствуйте, Condor, Вы писали:

TK>>Передавать в хранимую процедуру сразу 1000 записей в виде XML поля через text параметр.


C>оооо, похоже то что доктор прописал. А не мог бы ты скинуть примерчик на мыло condorz@mail.ru


Примерчик есть в этом форуме. здесь
Автор: TK
Дата: 03.12.02
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: Как быстро вставить данные в MS SQL 2000??
От: Condor  
Дата: 08.01.03 10:32
Оценка:
Здравствуйте, TK, Вы писали:

TK>Примерчик есть в этом форуме. здесь
Автор: TK
Дата: 03.12.02


Спасибо, попробую, напишу насколько быстрее стало
Re: Как быстро вставить данные в MS SQL 2000??
От: Admiral Украина  
Дата: 08.01.03 10:48
Оценка:
Здравствуйте, Condor, Вы писали:

C>Народ, нужен хелп по сабжу...


IRowsetFastLoad.
Re[2]: Как быстро вставить данные в MS SQL 2000??
От: TK Лес кывт.рф
Дата: 08.01.03 10:50
Оценка:
Здравствуйте, Admiral, Вы писали:

A>Здравствуйте, Condor, Вы писали:


C>>Народ, нужен хелп по сабжу...


A>IRowsetFastLoad.


здесь
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Как быстро вставить данные в MS SQL 2000??
От: Алекс Россия http://wise-orm.com
Дата: 08.01.03 10:52
Оценка:
Здравствуйте, Condor, Вы писали:

хъ

Можно вот так по извращатся (на скорость не тестировал)

insert into [Table] select var1,var2 from (
select 1 as var1,2 as var2
union all
select 32,123
union all
select 14,150
) as j


Изврат, но что поделаешь!

З.Ы. Идея с union all принадлежит не мне. Один товарищь посоветовал.
Re[3]: Как быстро вставить данные в MS SQL 2000??
От: IT Россия linq2db.com
Дата: 08.01.03 18:46
Оценка:
Здравствуйте, Condor, Вы писали:

M>>BULK INSERT

M>>Copies a data file into a database table or view in a user-specified format.

M>>Сначала подготавливаешь данные в нужном формате, а потом заливаешь в базу, на больших объемах выигрыш в разы.


В десятки раз. Я получал результат до 80 раз, уменьшая время процесса с 57 часов до 40 минут.

C>BULK INSERT тоже ведь по-моему только с винта может писать или из ОП тоже можно?


А SQL думаешь не пишет? Причём, если ты не будешь использовать транзакции, то он будет писать на диск при каждой вставке. При использовании транзакций можно увеличить скорость процентов на 15-20, ещё немного при если использовать Prepare. Но всё это детский сад по сравнению с BULK INSERT.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Как быстро вставить данные в MS SQL 2000??
От: Ged  
Дата: 08.01.03 19:54
Оценка:
Здравствуйте, Condor, Вы писали:

C>Объем данных — 1000 записей в 1 сек.

C>Если кто знает как можно быстрее вставить, буду признателен

есть такая утилитка — bcp.exe (bulk insert)
поставляется в комплекте с сервером.
... << RSDN@Home 1.0 beta 4 >>
Re: Как быстро вставить данные в MS SQL 2000??
От: Condor  
Дата: 10.01.03 12:27
Оценка:
Всем спасибо!
IRowsetFastLoad'а хватило, чтобы вставить 1000 строк за 0.016 — 0.030 сек. этого вполне достаточно.
Считаем вопрос закрытым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.