Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1101370985
zom
2004-11-25 11:23
2005.01.02
SHRINKDATABASE - плюсы и минусы сего действия?


9-1093887755
xman
2004-08-30 21:42
2005.01.02
Карты


1-1103261769
DelphiN!
2004-12-17 08:36
2005.01.02
Проблеммы при создании COM объекта в консольном приложении


1-1103190060
Garry_c
2004-12-16 12:41
2005.01.02
Пропало верхнее меню в окне. Как восстановить?


1-1103125417
Чайник
2004-12-15 18:43
2005.01.02
Как создать объект по имени его класса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский