Форум: "Базы";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизУвеличение скорости TADOBachMove Найти похожие ветки
← →
Grotesk (2004-01-05 00:58) [0]Доброго времени суток!
Пишу универсальную для основных типов баз данных процедуру TADOBachMove. Имеется код, который перебрасывает данные из одного TDataSet в другой.
while not SourceDataSet.Eof do begin
DestinDataSet.Append;
for I:=0 to SourceDataSet.FieldDefs.Count - 1 do begin
DestinDataSet.Fields[I].Value:=SourceDataSet.Fields[I].Value;
end;
DestinDataSet.Post;
SourceDataSet.Next;
end;
Все работает, но как всегда хочется улучшений :)
Вопрос: как ещё можно организовать такую процедуру.
Цель: увеличение скорости.
← →
Grotesk (2004-01-05 12:17) [1]?
← →
Delirium (2004-01-05 12:19) [2]ltBatchOptimistic
← →
JibSkeart (2004-01-05 12:20) [3]а что просто передача указателя не катит ?
или копию сделать ?
← →
Delirium (2004-01-05 12:24) [4]Копию надо делать через "ADODB.Stream", а тут как я понял, просто прокачка данных из одного источника в другой.
← →
Stas (2004-01-05 12:24) [5]А с помощью SQL ?
Типа:
Insert Into TableDest
select* from tableSource
← →
Delirium (2004-01-05 12:27) [6]А если источник и получатель - разные ?
← →
Grotesk (2004-01-05 12:49) [7]
> Delirium © (05.01.04 12:19) [2]
> ltBatchOptimistic
Пожалуйста немного поподробнее
> JibSkeart © (05.01.04 12:20) [3]
> а что просто передача указателя не катит ?
> или копию сделать ?
Имеются два TADODataSet. Связаны каждый со своей таблицей из разных баз данных (таблицы идентичны). Смысл процедуры - переложить данные из одной таблицы в другую. Если можно сделать копией или указателем, буду благодарен за пример.
SQL запрос не катит. В моем случае не поддерживаются запросы типа
SELECT * INTO [dBase 5.0; DataBase=D:\].[TestTable#DBF] FROM S_DISP
← →
Delirium (2004-01-05 14:11) [8]"Пожалуйста немного поподробнее" - про LockType ?!, - это в Help.
← →
sniknik (2004-01-05 15:14) [9]DestinDataSet.Post; лишняя операция в цикле, вынеси за пределы, проверку на режим не забудь чтобы не глючило на пустой таблице.
← →
Grotesk (2004-01-05 22:07) [10]
> sniknik © (05.01.04 15:14) [9]
> DestinDataSet.Post; лишняя операция в цикле, вынеси за пределы,
> проверку на режим не забудь чтобы не глючило на пустой таблице.
Это уже сделал. Все работает, но все равно медленно. 14000 строк копирует из Access примерно минуты 3 на SQL Server, про ODBC + Paradox, dBase вообще молчу. (Про то что из Access можно SELECTом знаю, но не в моем случае)
> Delirium © (05.01.04 14:11) [8]
> "Пожалуйста немного поподробнее" - про LockType ?!, - это
> в Help.
Понял, почитаю.
Господа. Дайте кто нибудь ссылку на информацию про библиотеку ADOX.
← →
Grotesk (2004-01-05 22:33) [11]Похоже ссылок и так полно. Посмотрю что там можно нарыть по поводу переноса таблиц...
← →
sniknik (2004-01-05 23:14) [12]> Господа. Дайте кто нибудь ссылку на информацию про библиотеку ADOX.
поиши на своей машине ADO210.CHM, мс офис ставил? найдеш. (есть в 2000/xp если полные)
← →
Grotesk (2004-01-05 23:19) [13]
> sniknik ©
Спасибо, уже нашел. Всячески читаю :). В интернете тоже есть кое что.
← →
Grotesk (2004-01-06 01:11) [14]Похоже ADOX работает только с Access :((
Не пойдеть. Дальше изучать пока нету смысла. В будущем возможно будет поддерживать остальные форматы. Пока нет. Продолжаем поиски ...
← →
Grotesk (2004-01-06 01:32) [15]
> Delirium © (05.01.04 12:19) [2]
> ltBatchOptimistic
Прошу прощения. Ступил. Скорость действительно увеличилась.
Но все равно медленно. Может я слишком много хочу?
Например хочу попробовать кидать целыми строками, а то и блоками... Или переподключить заполненный ADODataSet к таблице-получателю и сделать что нибудь вроде BatchAppend.
Все это пока что идеи.
Подскажите где поискать примеры (кроме справки, там я сейчас копаю)
← →
Delirium (2004-01-06 16:36) [16]В общем случае решения нет. Для каждой конкретной БД есть свои, уникальные уловки быстрого импорта данных.
← →
Grotesk (2004-01-07 19:28) [17]Удалось увеличить скорость в среднем в полтора-два раза используя объект Recordset и методы AddNew и UpdateBach.
Только появился вопрос, который пожалуй стоит вынести в отдельную тему ...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c