Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL*Loader Поддерживает аналог Merge или Upsert? Выполнить замену данных без их удаления 
:(
    Опции темы
ZVano
Дата 21.12.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: нет
Всего: 4



Нужно вставить либо обновить данные в некой таблице.
Часть записей в таблице уже существует.
Данные в CSV. Залить их планируется SQL Loader'ом. 
Но тут проблемка - режим replace сначала удаляет существующие записи, затем на их место insert-ит новые.
Это вызывает ошибку в случае, когда на запись есть ссылки из других таблиц.

Вопрос: Как это сделать средствами Oracle SQL Loader?

Перегонять их в SQL-скрипты с запросами в формате Merge очень ОООЧЕНЬ не хочется.

Пусть данные для примера будут следующими.

Таблица
Код

create table myUsers1(
  number(6)
    constraint p_myUsers1_id      primary key
, UserName varchar2(50)
, is_alive char
)


CSV
Код

IdUser;UserName;is_alive
1;"User1";'T'
2;"User2";'T'
3;"User3";'F'
...


CTL
Код

options (skip=1, rows=1)
load data
  --characterset CL8MSWIN1251
  infile      'inp/MyUsers1.csv'
  badfile     'log/MyUsers1.bad' 
  discardfile 'log/MyUsers1.dis'
replace -- << Вызывает ошибку обновления при наличии в других таблицах записей, которые ссылаются на обновляемую
into table MyUsers1
fields(
  Id  
, UserName
, is_alive
)



Это сообщение отредактировал(а) ZVano - 21.12.2011, 10:54


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.