powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос Access БД в SQL с помощью DTS
12 сообщений из 12, страница 1 из 1
Перенос Access БД в SQL с помощью DTS
    #32039111
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица в Access, из которой нужно перенести данные в 3 таблицы SQL.
Формат таблица в Access:
CompanyName
CompanyEmail

Формат таблиц в SQL:
[dbo].[company] (
[companyID] [bigint] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (255) NULL ,
....
) ON [PRIMARY]
GO

[dbo].[companyEmail] (
[companyID] [bigint] NOT NULL ,
[emailID] [int] NOT NULL ,
....
) ON [PRIMARY]
GO

[dbo].[email] (
[emailID] [int] IDENTITY (1, 1) NOT NULL ,
[value] [varchar] (255) NULL
) ON [PRIMARY]

С переносом в таблицы [dbo].[email] и [dbo].[company] все понятно, а вот как потом вставить данные в [dbo].[companyEmail] - не очень.
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039143
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно, в чем собственно проблема ?
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039148
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не пойму как получить companyID?
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039182
Фотография ТиБиБи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это просто, это даже я могу попытаться ответить...

Привыкшие к Access'у! SQL сервер не признается клиенту, чему равен ID (который IDENTITY), пока транзакция не закончится.

Вывод. Сначала перекачайте данные по компании (и email), потом, имея ID, подвяжете свои ссылочки многие-ко-многим.

Если я хоть чего-нибудь понимаю, конечно, что совершенно не факт! :)
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039192
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если уж на то пошло прилинкуй Access
и запроса "перекачай" таблицу
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039196
Фотография ТиБиБи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще на сервере в каждой таблице можно завести по дополнительному столбцу, например, AccessID (обычный int, не IDENTITY) и прописывать туда значения из автоинкрементного столбца из Access'a.

Кстати, этот же столбец пригодится, если в дальнейшем понадобится синхронизация с Access'ом.
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039205
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полность согласен с Владимиром,я так и делаю
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039225
Фотография ТиБиБи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это при рАзовом переносе. А если понадобится повторная синхронизация данных, которые могли быть исправлены, добиты или удалены хоть на сервере, хоть на Access'е, то понадобится AlternateKey, поскольку SQL сервер будет вести свой собственный ID, не совпадающий с ID в Access'е.
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039325
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посоветуйте новичку, как оптимизировать перенос данных.
Я переношу, так:
1. перенос данных основных данных в [dbo].[company] делаю с помощью Transform Data Task, причем в дополнительно поле заносится companyID из Access.
Эта операция выполняется достаточно быстро (всего около 90 000 записей);

2. следующий шаг выполняю с помощью Execute SQL Task.
Создаю курсор из таблицы Access и дальше построчно:
проверяю существует ли запись Email;
если существует, то добавляю новую запись в [dbo].[email];
возращаю последнюю запись из [dbo].[email] и соответсвующую запись из [dbo].[company] и добавляю эти данные в [dbo].[companyEmail];

Правильно ли организован 2 шаг?
Может в DTS есть другие варианты?
Может отключить индексацию таблиц и лог на время переноса?
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039373
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 1 ) insert into company (name) select distinct CompanyName from <таблица Access>

 2 ) insert into email (value) select distinct CompanyEmail from <таблица Access>

 2 ) insert into companyemail (companyid,emailid) 
   select company.CompanyID,email.EmailID from <таблица Access> as acc
   inner join company on company.name=acc.companyname
   inner join email on email.value=acc.companyemail


Access либо подлинковывается, либо табличка закачивается на SQL Server и удаляестя после обработки.
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32039392
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Тибиби
ну почему же только разово.
Поставть в расписание немного отшлифуй технику переноса и все
...
Рейтинг: 0 / 0
Перенос Access БД в SQL с помощью DTS
    #32049409
Фотография ТиБиБи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что одну и ту же информацию могли дополнить в обоих БД, соответственно одна и та же смысловая запись (дополненная таким образом) будет иметь разные ID, но одинаковые Alternate Key. О чем спич? ;)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос Access БД в SQL с помощью DTS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]