Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.068 c
14-1102765633
Alter_WondeRu
2004-12-11 14:47
2005.01.02
Интернет через GPRS... Перспективы...


1-1103538582
[shade]
2004-12-20 13:29
2005.01.02
Формы


4-1100627925
Ralf
2004-11-16 20:58
2005.01.02
Параметры запуска приложения


14-1102681118
Чеширский_Кот
2004-12-10 15:18
2005.01.02
Складывается ощущение, что...


1-1103207093
Bless
2004-12-16 17:24
2005.01.02
Что вызывается вместо inherited в данном случае?