объединение данных из старой таблицы в новую для ежемесячного архива - PullRequest
4 голосов
/ 29 декабря 2011

У меня есть оператор sql для вставки данных в таблицу для архивации, но мне нужен оператор слияния для запуска на месячной основе, чтобы обновить новую таблицу (2) с любыми данными, которые изменились в старой таблице (1), которыетеперь следует переместить в архив.

Часть проблемы заключается в удалении перемещенных данных из старой таблицы.Моя вставка не делает этого, но мне нужно, чтобы она была там, где сохраненные данные удаляются из исходной таблицы.

Существует ли один SQL-оператор, который перемещает данные из одной таблицы в другую таким образом?Или это должна быть двухэтапная операция?

В первоначальном утверждении перемещались данные в зависимости от возраста и нескольких других относительных факторов.вставка:

INSERT /*+ append */ 
  INTO tab1
SELECT *
  FROM tab2
 WHERE (Postingdate < TO_DATE ('2001/07/01', 'yyyy/mm/dd')
       OR jobname IS NULL)
   AND STATUS <> '45';

Вся помощь оценена ...

Ответы [ 2 ]

0 голосов
/ 17 февраля 2013

Я думаю, вы должны попробовать это с таблицей разделов.Моя идея состоит в том, чтобы создать таблицу с разделом диапазона на дату:

create table(id number primary key,name varchar,J_date date )
partition by range(J_date)(PARTITION one_mnth VALUES LESS THAN(sysdate-30)),
partition by range(J_date)(PARTITION one_mnth VALUES LESS THAN(maxvalue)));

, затем переместить этот раздел в другую таблицу и обрезать этот раздел

0 голосов
/ 29 декабря 2011

Оператор merge позволит вам сделать это в одном операторе, добавив оператор удаления в предложении обновления.См. Документация Oracle по слиянию .

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...