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

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

Программный импорт в SQL Server из Access [D5, MSSQL]


AngelSaint ©   (2004-09-21 08:20:00) 

Доброго времени суток мастера.
Проблема в следующем - есть БД Access, в которой есть пару таблиц (по 500 с лишним тыщ записей в каждой). Нужно программно перекинуть данные из Access'а в SQL Server. У меня даже при открытии одной таблицы тачка кашляет так, что слышно в соседнем кабинете. Открываю исходный набор запросом select * from TBL_NAME. Может есть какой то способ вытаскива из исходной таблицы не все записи, а только например первые 100, потом еще 100 и т.д.? очень нужно. заранее благодарен.


AngelSaint   (2004-09-21 14:00:00) [1]

Сделал через DTS. удобная и быстрая штуковина.
Всем спасибо за помощь!


Nikolay M.   (2004-09-21 11:45:00) [2]


> AngelSaint   (21.09.04 11:40) [14]
> >Nikolay M.
> где читать? если можно на русском

Результат любого поисковика выдаст кучу ссылок.
Любите БОЛ - источник знаний.
http://www.sql.ru/articles/Publications.shtml#1-9


Nikolay M.   (2004-09-21 11:40:00) [3]


> AngelSaint   (21.09.04 11:31) [12]
> >Nikolay M.
> а что такое DTS?

Data Transformation Service. Мощный и гибкий инструмент для переноса данных.


AngelSaint   (2004-09-21 11:40:00) [4]

>Nikolay M.
где читать? если можно на русском


AngelSaint   (2004-09-21 11:31:00) [5]

>Nikolay M.
а что такое DTS?


sniknik   (2004-09-21 11:17:00) [6]

> если я не прав, то как нада правильно?

datasource = источник данных т.е. замени на путь+имя базы.
user_id = пользователь т.е. замени на имя юзера.
password = пароль т.е. замени на пароль
provider_string = строка от провайдера т.е. замени на на эту строку

и заметь все в разных строках, а не в одной как у тебя.
у тебя практически часть от этого
OPENDATASOURCE(provider_name, init_string)


Nikolay M.   (2004-09-21 11:11:00) [7]

Почему бы DTS-ом не воспользоваться? Имхо, это намного проще, чем возиться с openrowset/opendatasource.


AngelSaint   (2004-09-21 11:07:00) [8]

ну вот же синтаксис
OPENROWSET('provider_name'
   {
       'datasource';'user_id';'password'
       | 'provider_string'
   },
   {
       [catalog.][schema.]object
       | 'query'
   })

в provider_string я запихал данные из ADOConnection... если я не прав, то как нада правильно? у меня база защищена не только паролем на БД, но и файлом system.mdw... он распространяется с программой и не прописывается вместо пользовательского, просто лежит в каталоге проги и подцепляется когда нужно самой программой


sniknik   (2004-09-21 10:56:00) [9]

потому что неправильный
Data Source, Password, User ID, ... ты взял часть из того как задаются параметры к opendatasource.
openrowset <> opendatasource
если так не видиш то хотя бы количество букв в них сосчитал. ;о))


AngelSaint   (2004-09-21 10:36:00) [10]

почему та вот такой запрос

SELECT     a.*
FROM         OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                     'Password=password;User ID=user;
                     Data Source=database.mdb;Persist Security Info=True;
                     Jet OLEDB:System database=system.mdw;
                     Jet OLEDB:Database Password=123456',
                      'select * from TBL_NAME') a

в самом SQL Server выдает ошибку

Невозможно найти устанавливаемый ISAM


zx   (2004-09-21 09:37:00) [11]

Linked Servers


ЮЮ   (2004-09-21 09:09:00) [12]

[MS]SQL Server Book Online, естественно


AngelSaint   (2004-09-21 08:58:00) [13]

>sniknik ©   (21.09.04 08:48) [3]
из подключения к MSSQL
>SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'D:\MDBBase.MDB';'admin';'', TableName) AS a

можно про это поподробней пажалуста
или ссылку где прочесть


sniknik   (2004-09-21 08:48:00) [14]

> программно перекинуть
из подключения к MSSQL
SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'D:\MDBBase.MDB';'admin';'', TableName) AS a

(а можно и select into? insert into)

> например первые 100, потом еще 100 и т.д.?
выборка с ограничением по автоинкременту, вполне возможно (даже если часть удалилась)
но сначала посмотри сколько будет запрос делатся в отличии от твоей реализации.


AngelSaint   (2004-09-21 08:38:00) [15]

мне нужно именно программно. типа импорт\экспорт для\от клиентов


ЮЮ   (2004-09-21 08:31:00) [16]

В Access уже есть
Сервис>Служебные программы>Мастер преобразования в формат МS SQL


Наверх

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