Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

БЫСТРОЕ добавление записей в БД


sally ©   (2006-04-07 17:22:00) 

Уважаемые мастера.
Как наиболее быстро "перегнать" данные из Paradox\DBF в Acceess\MS SQL Server. Для доступа к Paradox используется TTable. Для Acceess\MS SQL Server - ADO. Сам скрипт(INSERT INTO ...) генерируется ОЧЕНЬ быстро. Однако при выполнении SQL тупит по-черному. Данные перегонять приходится частенько, необходимо  также обрабатывать данные, по-этому вариант MS DTS не подходит никак(также и по-другим "соображениям"). Но хотелось бы приблизится к их скоростям.
Есть ли у кого какие мысли?


Nikolay M.   (2006-04-09 22:38:00) [1]


> Готовить DTS умею не хуже вашего.


Померяемся? :)


> Программа 3-х звенная. Сервер заточен на использование IB\MS
> SQL\Oracle. Планируется еще под DB2 и Sybase.


Тогда задавай 5 вопросов на 5 разных форумах. Изначально речь шла про аксесс и MS SQL, для последнего я дал два приемлемых варианта. Вопрос, почему после "уточнений" вместо двух СУБД оказалось 5, а под "частым перегоном" стал подразумеваться "разовый", остается на твоей совести.


Sally   (2006-04-09 21:03:00) [2]

>Nikolay M
Готовить DTS умею не хуже вашего. НО!!! Еще раз повторюсь. DTS использовать нельзя. Не из-за того, что религия не позволяет. MS SQL\Access это как вариант. Смысл программы - перекачивать данные из одной базы данных в другую. И типы СУБД могут быть различные. Просто переводим клиентов(своих и чужих) с различных программ под разные СУБД(в том числе и файловые БД) на свою программу. Программа 3-х звенная. Сервер заточен на использование IB\MS SQL\Oracle. Планируется еще под DB2 и Sybase. И че, всем клиентам DTS устанавливать? Мне он тоже нравится. Но не проходит этот вариант. Конечно "перегон" данных работа разовая и можно потерпеть, но ведь интересно ускорить этот процесс, при чем есть программы которые работают достаточно быстро.


Nikolay M.   (2006-04-09 16:18:00) [3]


> Однако при выполнении SQL тупит по-черному. Данные перегонять
> приходится частенько, необходимо  также обрабатывать данные,
>  по-этому вариант MS DTS не подходит никак


Ты просто не умеешь готовить.
У меня на ДТС-пакетах основано два десятка процедур импорта-экспорта данных. Ничто не "тупит", все "обрабатывается" (в твоей терминологии).


> как добиваются такой скорости


Для MS SQL самым быстрым способом вставки всегда был BULK INSERT, подробности в БОЛ.


Sally   (2006-04-09 15:47:00) [4]

>sniknik
Полазил по нету и посмотрел пару программ.
http://www.dbput.com
http://www.spectralcore.com/(Full Convert)

В этих программах переливание идет быстрее, чем если использовать что ADOTable(Query), что просто генерировать SQL и выполнять его. И если в Full Convert теоретически может использоваться пакетная обработка, то в DBPut я сомневаюсь, т.к. есть возможность писать собственные функции. Хотелось бы узнать мнение гуру о том, как добиваются такой скорости


sniknik   (2006-04-07 18:05:00) [5]

> подразумевает использование просто SELECT...
не просто, некоторая обработка данных может быть непосредственно в запросе. но даже если там нельзя обработать так как хочется, то вставка во временную таблицу, обработка в ней (желательно опять пакетная, массово) и переброс после в основную, может оказаться быстрее чем переливание с TTable в ADODataSet с последовательной.
но это уже даже не мысли, пошла конкретика задачи... о которой не сказано, и потому это домыслы.


Sally   (2006-04-07 17:51:00) [6]

а как быть с дополнительной обработкой полей перед вставкой? Простый SELECT не подходит, а "предложение IN" подразумевает использование просто SELECT...


sniknik   (2006-04-07 17:45:00) [7]

хелп в аксессе по "предложение IN", в BOL (mssql) по OpenRowset, OpenDataSource, Linked Servers. подробнее не бывает.


Sally   (2006-04-07 17:35:00) [8]

Для Acceess\MS SQL Server использую только ADOCommand+ADOConnection.

Да... Чей-то одних мыслей маловато :) А поподробней :)


sniknik   (2006-04-07 17:27:00) [9]

> Есть ли у кого какие мысли?
а тебе этого хватит? всеголиш мысли...

мысль такая, выкинуть все TTable-ы и пользоваться возможностями указаных серверов/движков, для пакетной вставки...


Наверх

Титульная страница Поиск, карта сайта Написать письмо