Access: объединить две DB в одну

User avatar
EMT
Уже с Приветом
Posts: 11040
Joined: 15 May 2001 09:01
Location: Minneapolis, MN (10000 lakes) USA

Access: объединить две DB в одну

Post by EMT »

Как это сделать?
Есть две базы данных, абсолютно идентичных по количеству таблиц, их названий и т.п. Но записи - разные как и их количество. Порядок расположения записей в таблицах после объединения значения не имеет.
Мимоходом...
User avatar
Masterok
Уже с Приветом
Posts: 1536
Joined: 03 Aug 2000 09:01

Post by Masterok »

В случае с Ораклом я бы делал так:

1. Создать database link между двумя базами. Если они находятся в одном инстансе (т.е. две схемы, многие называют их отдельными базами данных) - линк создавать не надо, но надо, тем не менее дать привилегии из одной схемы на другую.

2. написать pl/sql anonimous block or stored procedure, в котором используя user_tables view, делать что-то типа этого (не отлажено, писалось без доступа к ораклу):

for c1 in (select table_name from user_tables) loop
execute immediate "insert into DBDEST."||c1.table_name||
" select * from DBSOURCE."||c1.table_name;
commit;
end loop;

Здесь DBDEST - destination scheme, DBSOURCE - source scheme, commit можно поставить после цикла если таблицы маленькие или rollback segments большие.

Этот подход не учитывает необходимость генерации новых первичных ключей. Если нужно, приведенный выше кусок кода надо будет усложнять и углублять с использованием sequences или max(<primary key>).

К сожалению, ничего попроще в голову не приходит. Будет очень интересно если есть другие подходы.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Access: объединить две DB в одну

Post by Sabina »

EMT wrote:Как это сделать?
Есть две базы данных, абсолютно идентичных по количеству таблиц, их названий и т.п. Но записи - разные как и их количество. Порядок расположения записей в таблицах после объединения значения не имеет.


How to Merge Records from Two Identical Access Databases

......
If you would like to see my code, drop me a line at datafast@comcast.net.


Cабина
User avatar
Masterok
Уже с Приветом
Posts: 1536
Joined: 03 Aug 2000 09:01

Re: Access: объединить две DB в одну

Post by Masterok »

Sabina wrote:
EMT wrote:Как это сделать?
Есть две базы данных, абсолютно идентичных по количеству таблиц, их названий и т.п. Но записи - разные как и их количество. Порядок расположения записей в таблицах после объединения значения не имеет.


How to Merge Records from Two Identical Access Databases

......
If you would like to see my code, drop me a line at datafast@comcast.net.


Cабина


Хорошая статья, напомнила мне, что reference tables обьединять нельзя. Обьединять можно только fact tables, и то с большой осторожностью.
Кстати, помогает, когда reference tables are prefixed with some prefix, e.g. "ref_". In this case it is easier to skip them in the piece of code I gave in the previous post.

Return to “Вопросы и новости IT”