Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
ВнизInsert большого количества строк... как быстрее? Найти похожие ветки
← →
zom (2004-11-24 13:28) [0]Задача - нужно оперативно и надежно передать таблицу формата DBASE IV на MS SQLServer2000 и там заполнить сообтветствующую таблицу (не полное соответсвие, но по большей части).
Варианты пришедшие в голову -
1. Построчный Insert через ADOQuery - самый надежный вариант из опробованных (с прямым использованием транзакций).
2. Скопировать файл на SQL в папку подключеную как линк-сервер для дбфников и оттуда зачать запросом - если линк свободен, то быстро и надежно, но если он кем-то еще занят (что бывает нередко), то будем ждать неопределенно долго...
3. Использование ADOTable и там через Append()...
не пробовал, потому как сомневаюсь что быстрее чем квери, хотя может кто знает, что быстрее и почему?
Еще что можете посоветовать?
← →
Nikolay M. © (2004-11-24 13:31) [1]Давно уже известно, что быстрее bcp ничего пока нет. Только про фичи почитай, чтобы на грабли не наступать.
← →
stone © (2004-11-24 13:35) [2]см. OPENDATASOURCE в BOL
← →
Nikolay M. © (2004-11-24 13:50) [3]А если важнее сделать просто и надежно - DTS тебе в руки.
← →
zom (2004-11-24 13:53) [4]А что нибудь конкретное сказать можете?
что такое bpc? это не то который bulk insert делает? если да то не подойдет - ненадежно и с правами в наших доменах туго (тут у нас пробовали что-то такое через дотнет.. безмазово...) хотя быть может, только как?
и чего смотреть в OPENDATASOURCE ?
← →
Александр Иванов © (2004-11-24 13:59) [5]Если это не обязательно делать программно (а в тексте вопроса я этого не заметил), то лучше воспользоваться функцией экспорта данных в Enterprice Manager.
← →
zom (2004-11-24 14:12) [6]к сожалению обязательно делать программно... в принципе можно вызвать другую программу, но тогда сложно отлавливать надежно ли отработало, хотя можно как нить озаботиться.. но главная сложность - кроме моей проги на этой машине нет программ обращающихся к серверу (и быть им там низя... а то могут всякие ушлые с админскими правами нахулюганить)
← →
Nikolay M. © (2004-11-24 14:17) [7]
> что такое bpc? это не то который bulk insert делает?
Оно самое. Что подразумевается под "ненадежностью"?
И при чем тут домены? Еще и дотнет откуда-то взялся... К чему он здесь вообще?
Тогда делай через DTS. В твоем случае - что доктор прописал.
> Александр Иванов © (24.11.04 13:59) [5]
> Если это не обязательно делать программно (а в тексте вопроса
> я этого не заметил), то лучше воспользоваться функцией экспорта
> данных в Enterprice Manager.
А ЕМ это делает, видимо, аппаратно?
← →
zom (2004-11-24 14:36) [8]Домены тут при том, что у нас очень злобная и сложная доменная политика - даже не знаю точно что можно будет пользователю а что нет.. коннек к серверу через АДО точно можно... а для балкинсерта нужно будет как минимум скопировать файл на SQL и запустить на нем прогу, а это уже ненадежно (дадут ли вообще).
Или как?
А дот нет тут при том, что кроме меня с этими базами многие работают, но сейчас побольшей части на вижуалстудиодотнет... так они уже полгода пытаются надежный вариант запустить - то у юзера прав не хватает, то еще чего...
← →
Nikolay M. © (2004-11-24 14:54) [9]Седьмой Континент?
Мдяя... Короче, еще раз (последний) пишу: DTS. С клиентской машины вообще ничего не нужно делать, все будет работать на сервере. А уж каким образом дать тебе права на запуск DTS-пакета - это пусть болит голова у сисадминов.
← →
zom (2004-11-24 15:36) [10]Ну это я понимаю.... но на сисадмина надейся да сам не плошай ;)
ладна... вообще придется с этим и разбираться... попробую балкинсерт, по идее тут сложность только одна - скопировать файлик на сервер, уж на это-то права выпросим...
← →
Александр Иванов © (2004-11-24 16:27) [11]Nikolay M. © (24.11.04 14:17) [7]
Я думаю, что меня поняли. программно в данном случае значит, что это действие будет производится из создаваемой программы, а не с помощью готовых программ.
← →
Nikolay M. © (2004-11-24 16:38) [12]
> Александр Иванов © (24.11.04 16:27) [11]
> Я думаю, что меня поняли. программно в данном случае значит,
> что это действие будет производится из создаваемой программы,
> а не с помощью готовых программ.
Я-то тебя понял.
Но если ты хоть раз запускал в ЕМ экспорт данных (а я надеюсь, ты знаешь, что советуешь), то должен был заметить, что в этом случае запускается не что иное, как мастер экспорта данных DTS.
← →
zom (2004-11-25 10:43) [13]Вобщем согласно тестам, bulk inser оказался весьма быстр ;)
скорость с дтс-ом примерно одинаковая...
но время инсерта СИЛЬНО разнится от нагрузки - от 13 сек. до 4мин. (чаще всего минуты польторы) для одного и того же набора... причем в тоже самое время из этой базы (да и вообще из сервера) были только селекты (но большие и злобные)... и это при условии что исходные данные отсортированы как в кластерном индексе и соответствующий параметр добавлен.
Правда на эту машину, где сервер возложено много задач еще (например домен-контроллер) так что быть может что не в SQLсервере дело...
в любом случае быстрее тех 10-15 (и бывало наверно больше) мин. через адо ;)
← →
Nikolay M. © (2004-11-25 17:12) [14]
> Вобщем согласно тестам, bulk inser оказался весьма быстр
> ;)
Кто бы сомневался... :)
> но время инсерта СИЛЬНО разнится от нагрузки - от 13 сек.
> до 4мин. (чаще всего минуты польторы) для одного и того
> же набора... причем в тоже самое время из этой базы (да
> и вообще из сервера) были только селекты (но большие и злобные)...
Хм. Тестить заливку булком на рабочем серваке... Ну ты смельчак... :)
> на эту машину, где сервер возложено много задач еще (например
> домен-контроллер)
А вот это вы зря...
← →
zom (2004-12-07 16:05) [15]Ну да... на рабочем серваке тестили... а на пустом и смысла нету - там ясно что все быстро работает, это и теоретически ясно - надо же практически в рабочих условиях.
Оказалось вполне надежно - на 73-х серверах работает ;) только один раз была ошибка и транзакция не откатилась, что странно... хотя условия восстановить не удалось.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c