|
|
|
новичок
      
участник
Last Login: 29.03.2006 6:49
Сообщ.: 7,
Visits: 78
|
|
Надо реализовать импорт большого количества(несколько тысяч строк) данных из Excel в MS SQL.
Сначала я написал прграммку на Delphi, которая через com считывает данные из *.xls и вносит их в MS SQL. Но программа работает медленно. (реализована через позднее связывание).
Недавно узнал, что импорт можно осуществлять средствами MS SQL: через DTS и через OpenRowset. Но чтобы обработать данные из Excel перед их вводом в MS SQL придется повозиться, т.к. документы *.xls имеют определённую структуру..
Посоветуете какую технологию лучше использовать.
Или проще будет потратить время на оптимизацию кода в Delphi, чем на изучение этих технологий?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Я думаю что изучение DTS себя окупит. Тем более в Enterprise Manager есть wizard помогащий создать пакет преобразования.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.03.2008 15:26
Сообщ.: 701,
Visits: 7 028
|
|
Однозначно DTS!
Но чтобы обработать данные из Excel перед их вводом в MS SQL придется повозиться, т.к. документы *.xls имеют определённую структуру..
Повозиться придется в любом случае!
Или проще будет потратить время на оптимизацию кода в Delphi, чем на изучение этих технологий?
А писать текст запросов в коде приложения - вообще порочная практика!
Простой пример - где проще изменить запрос, в одном месте на сервере
или на 10 рабочих станциях пользователей?
Насчет "сложности" изучения... Как и говорил bazile есть визард,
очень простой и понятный.
|
|
|
|
|
новичок
      
участник
Last Login: 29.03.2006 6:49
Сообщ.: 7,
Visits: 78
|
|
Большое спасибо за советы!
А вы не подскажите из-за чего при запросе:
SELECT *FROM OpenDataSource( ''''Microsoft.Jet.OLEDB.4.0'''',
''''Data Source="M:\temp.xls";User ID=Admin;Password=;
Extended properties=Excel 5.0'''')...[Прил4$]
возникает ошибка :
Server: Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing a query for execution against OLE DB provider ''''Microsoft.Jet.OLEDB.4.0''''.
[OLE/DB provider returned message: Неизвестный]
и при импорте стандартными средствами SQL Server Enterprise Manager таблицу создает, но когда дело доходит до импорта данных, то пишет ту же выше приведенную ошибку
Эта ощибка является серьёзной преградой для использования DTS.
Причем мне кажется, что вся пробленя в конфигурациях сервера, или в конфигурациях windows, а не в синтаксисе запроса.
(сервер стоит локальный на домашнем ПК).
Подскажите что это может быть ?
я уже пробывал на разны Excel файлах, и тип всех данных выставлял в строковый - не получается..
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.03.2008 15:26
Сообщ.: 701,
Visits: 7 028
|
|
Попробуй установить (переустановить) MDAC.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 29.09.2007 22:12
Сообщ.: 343,
Visits: 3 388
|
|
| А к Excel можно и через АДО подключится (Provider=Jet-Extended Properties=Excel 8.x)
|
|
|
|
|
новичок
      
участник
Last Login: 29.03.2006 6:49
Сообщ.: 7,
Visits: 78
|
|
[quote="vpanasenko"]А к Excel можно и через АДО подключится (Provider=Jet-Extended Properties=Excel 8.x)[/quote]
а как это сделать?
при создании *.UDL я такого провайдера не нашёл..
|
|
|
|
|
новичок
      
участник
Last Login: 29.03.2006 6:49
Сообщ.: 7,
Visits: 78
|
|
[quote="Silver"]Попробуй установить (переустановить) MDAC.
[/quote]
Переустановка тоже не помогла :-(
|
|
|
|
|
Supreme Being
      
участник
Last Login: 19.09.2008 13:31
Сообщ.: 106,
Visits: 979
|
|
Ребята, а через .ТХТ не пробовали?
Экспортнуть в .ТХТ а потом штатными средствами импортнуть.
Быстро и надёжно.
И главное работает в любых версиях :)
Александр
|
|
| | |