Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенос Access БД в SQL с помощью DTS / 12 сообщений из 12, страница 1 из 1
26.07.2002, 14:51:12
    #32039111
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Имеется таблица в 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
26.07.2002, 15:48:06
    #32039143
Белов Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Непонятно, в чем собственно проблема ?
...
Рейтинг: 0 / 0
26.07.2002, 15:54:50
    #32039148
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Не пойму как получить companyID?
...
Рейтинг: 0 / 0
26.07.2002, 17:07:36
    #32039182
ТиБиБи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Это просто, это даже я могу попытаться ответить...

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

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

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

Кстати, этот же столбец пригодится, если в дальнейшем понадобится синхронизация с Access'ом.
...
Рейтинг: 0 / 0
26.07.2002, 17:51:10
    #32039205
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Полность согласен с Владимиром,я так и делаю
...
Рейтинг: 0 / 0
26.07.2002, 19:14:54
    #32039225
ТиБиБи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Это при рАзовом переносе. А если понадобится повторная синхронизация данных, которые могли быть исправлены, добиты или удалены хоть на сервере, хоть на Access'е, то понадобится AlternateKey, поскольку SQL сервер будет вести свой собственный ID, не совпадающий с ID в Access'е.
...
Рейтинг: 0 / 0
29.07.2002, 12:19:00
    #32039325
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Посоветуйте новичку, как оптимизировать перенос данных.
Я переношу, так:
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
29.07.2002, 13:45:13
    #32039373
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос Access БД в SQL с помощью DTS
Я бы сделал так:

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


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