Инструмент для объединения баз MS Access
Sep. 22nd, 2008 11:05 am![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Есть две базы в MS Access 2002 (по 4 десятка полей), отличающиеся друг от друга несколькими (7-10) полями. Стоит задача объединить две базы в одну базу MS Access 2002, сохранив поля и записи обеих баз.
Посоветуйте, каким инструментом это делать удобнее всего?
Спасибо
xpost
Посоветуйте, каким инструментом это делать удобнее всего?
Спасибо
xpost
no subject
Date: 2008-09-22 03:30 pm (UTC)Так или иначе, обе операции можно проделать в самом MS Access (в первом случае объединение по ключу, во втором - просто копия таблицы).
no subject
Date: 2008-09-22 03:33 pm (UTC)no subject
Date: 2008-09-22 03:37 pm (UTC)no subject
Date: 2008-09-22 03:39 pm (UTC)no subject
Date: 2008-09-22 03:44 pm (UTC)no subject
Date: 2008-09-22 03:49 pm (UTC)Каково количество записей (строк)? >1307 и 572
Есть ли уникальное ключевое поле в обеих таблицах? есть
Какой размер первого и второго mdb-файлов? 2,7 мБ и 1,2 мБ
no subject
Date: 2008-09-22 03:55 pm (UTC)2) Создайте пустой файл-базу
3) Туда импортируйте обе таблицы (кликаем на окошке с базой и выбираем «импорт», там выбираем файл и таблицу из него)
4) Сохраните изменения
продолжение следует (дайте знать, как успехи)...
no subject
Date: 2008-09-22 03:56 pm (UTC)no subject
Date: 2008-09-22 04:07 pm (UTC)С типом объединения потом разберемся.
6) Идем в главное меню Query и там выбираем „Make-Table query”, попутно задавая имя таблицы. Запускаем. Что видим?
no subject
Date: 2008-09-22 04:18 pm (UTC)no subject
Date: 2008-09-22 04:25 pm (UTC)Сумма полей 2х таблиц больше 255? Если нет, то перед шагом 5) надо выполнить команду через главное меню "Tools->Database Utilities->Compact and repare Database". И повторяем 5) шаг
no subject
Date: 2008-09-22 04:35 pm (UTC)no subject
Date: 2008-09-22 04:40 pm (UTC)хотя при необходимости из "1" можно сделать "а" и наоборот :) вы хотите объединить таблицы по полям разных типов?
no subject
Date: 2008-09-22 04:48 pm (UTC)И в итоге нужно получить таблицу с 1307 + 572 = 1879 записями
no subject
Date: 2008-09-22 04:52 pm (UTC)вам нужно написать query типа ...
no subject
Date: 2008-09-22 05:00 pm (UTC)SELECT * INTO new_table FROM
(
SELECT Table1.Pole1, Table1.Pole2, Table1.Pole3, ''
FROM Table1
UNION ALL
SELECT Table2.Pole1, Table2.Pole2, Table2.Pole3, Table2.Pole5
FROM Table2
);
и запустить
обязательное условие - количество выбираемых полей из обеих таблиц должно быть одинаковым, если поля выпадают, то заменяем на '' например.
ну и последовательность полей должна сохраниться
no subject
Date: 2008-09-22 05:03 pm (UTC)no subject
Date: 2008-09-22 05:07 pm (UTC)no subject
Date: 2008-09-22 05:12 pm (UTC)Pole1,Pole2,Pole3,Pole4
Структура таблицы T2:
Pole1,Pole5,Pole6,Pole7
В обеих таблицах есть Pole1, в первой нет Pole5,Pole6,Pole7, во второй нет Pole2,Pole3,Pole4.
Пишем:
SELECT * INTO new_table FROM
(
SELECT T1.Pole1, T1.Pole2, T1.Pole3, T1.Pole4, '', '', ''
FROM Table1
UNION ALL
SELECT T2.Pole1, '', '', '', T2.Pole5, T2.Pole6, T2.Pole7
FROM Table2
);
Идею уловили?
no subject
Date: 2008-09-22 07:31 pm (UTC)no subject
Date: 2008-09-22 07:36 pm (UTC)no subject
Date: 2008-09-22 09:54 pm (UTC)no subject
Date: 2008-09-22 09:59 pm (UTC)no subject
Date: 2008-09-22 07:10 pm (UTC)no subject
Date: 2008-09-22 07:20 pm (UTC)ID = "1", Pole1 = "Мама. Мыла. Раму"
В таблице 2 у Вас:
ID = "1", Pole1 = "Папа.Читал. Газету"
Какой результат Вам нужен?
no subject
Date: 2008-09-22 07:29 pm (UTC)no subject
Date: 2008-09-22 07:35 pm (UTC)no subject
Date: 2008-09-22 05:22 pm (UTC)no subject
Date: 2008-09-22 07:12 pm (UTC)no subject
Date: 2008-09-22 04:34 pm (UTC)no subject
Date: 2008-09-22 04:51 pm (UTC)no subject
Date: 2008-09-22 05:07 pm (UTC)no subject
Date: 2008-09-22 09:55 pm (UTC)