Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2
  • 3

ТЕМА:

Перекачка данных из одной таблицы в другую 12 года 8 мес. назад #2547

Добрый день. Не могли бы вы, господа, помочь мне в следующем вопросе. Есть совершенно две одинаковые таблицы, связь между которыми осуществляется через DBLink. Нужно написать скрипт по перекачке данных из одной таблицы в другую, НО на таблицы наложен CONSTRAINT, который не позволяет вставлять дублированные строки. Так и нужно, дублированные строки не нужны, но, данные в таблицах могут повторяться, поэтому, когда я запускаю скриптик типа: INSERT INTO table1@DBLink SELECT * FROM table1 начинается отработка скрипта, затем он доходит до первого констрэйнта и вываливается. Понимаю, что надо писать на PL/SQL с обработкой исключительной ситуации, но дело довольно срочное, а копаться с PL/SQL нет времени...:-). Может быть, кто - то поможет? Заранее благодарен. Андрей...:-)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Перекачка данных из одной таблицы в другую 12 года 8 мес. назад #2548

Ну и напиши

insert into a...
select from b...
where not exists
(select * from a where a.ключ=b.ключ)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Перекачка данных из одной таблицы в другую 12 года 8 мес. назад #2549

Спасибо, Kireev, что ответили. Дело в том, что я не стал это писать в первом постинге - да, я пытался делать так, как Вы советуете, но при этом SQLplus так четко "зависает", что я бросил эти попытки и подумал, что вводить надо именно построчно! Ресурсов не хватает, вот в чем дело - идет ругань на роллбэки и т.п....:-)
Дело в том, что таблица, связь с которой идет по DBLink'у, не "хавает" псевдоним, то есть если написать
INSERT INTO table@dblink a select * FROM table b
WHERE a.col1 NOT IN (SELEСT col1 FROM table) (col1 - уникальное поле), то, почему - то, идет "ругань"
Field a.col1 does not exist...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от vetal.

Re: Перекачка данных из одной таблицы в другую 12 года 8 мес. назад #2550

Приветик)
Скажи, а версия Оракла какая? Если 9i, то может MERGE INTO стаботает быстрее, чем INSERT INTO, и можно обработать дубликаты

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Перекачка данных из одной таблицы в другую 12 года 8 мес. назад #2551

форма записи insert ... select ... это просто возможность объединить два sql выражения в одно, так что вполне естественно, что вторая часть ничего не знает о первой.

А чтоб закачать данные отключите констреинты на таблице, затем вставьте данные, удалите дублирующиеся строки, включите констреинты.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Перекачка данных из одной таблицы в другую 12 года 8 мес. назад #2552

Версия Oracle 8i. Насчет отключения констрэйнтов - не катит, так как база данных работает в горячем режиме и весьма нежелательно, чтобы они отключались. Относительно же удаления дублей - так это вообще делать боязно на "живой" базе, тем паче, что я этого не делал, да и, пожалуй, полагаю, что ресурсов не хватит....:-)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
Время создания страницы: 0.432 секунд