Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Слияние таблиц?  [new]
Ayrat
Member

Откуда:
Сообщений: 65
Есть таблицы tab1, tab2, ... tabN. Список полей у них одинаковые, только заполнялись разными пользователями. Нужно все таблицы слить в единое, только добавить поле поле user, куда ставить 1, 2, ...N. Просто сразу в голову ничего не лезет, может кто-то уже делал такие операции?
30 июн 06, 12:46    [2830179]     Ответить | Цитировать Сообщить модератору
 Re: Слияние таблиц?  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
Колонку можно добавить при помощи alter table add.

Дальше три варианта (зависит от ваших конечных целей):

1. Сделать view из union all двух таблиц.
2. Создать новую таблицу с партициями по user и засунуть туда эти таблицы при помощи partition exchange.
3. insert данных из одной таблицы в другую, с полследующим удалением ненужной.
30 июн 06, 12:54    [2830227]     Ответить | Цитировать Сообщить модератору
 Re: Слияние таблиц?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
create table tab0 as
  select 'user1' user, tab.* from tab1
  union all
  select 'user2' user, tab.* from tab2
  union all
  select 'user3' user, tab.* from tab3
  union all
........
  select 'usern' user, tab.* from tabn;
30 июн 06, 12:57    [2830248]     Ответить | Цитировать Сообщить модератору
 Re: Слияние таблиц?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Только я бы не стал называть колонку USER (во избежании ...) :)
30 июн 06, 12:59    [2830258]     Ответить | Цитировать Сообщить модератору
 Re: Слияние таблиц?  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Ага - это я погорячился :)
И ещё - tab.* надо поменять на tab1.*, tab2.* ... tabn.*
30 июн 06, 13:01    [2830272]     Ответить | Цитировать Сообщить модератору
 Re: Слияние таблиц?  [new]
Ayrat
Member

Откуда:
Сообщений: 65
Спасибо! Соорентировался :-0))
30 июн 06, 14:28    [2830750]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить