powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert. как сгенерить скрипт вида if exists ... then update else insert
13 сообщений из 13, страница 1 из 1
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665494
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сгенерить скрипт заполнения базы данными.
у IBExpert есть замечательная функция "Export data Into Script"
но, на сколько я понял, с её помощью можно создать скрипт либо на Insert либо на update
но хотелось бы совместить. Наверняка же есть такая возможность
т.е нужно на выходе получить скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if exists (select * from моя_таблица where ключ = значение_ключа) 
 then update моя_таблица 
       set поле_1  = значение_поля_1 
            .... 
       where  ключ = значение_ключа
   else insert into моя_таблица  ( ключ, поле_1...)
         values (значение_ключа, значение_поля_1, ... )
Подскажите есть ли функция создающая подобный скрипт в IBExpert и как её вызвать.
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665501
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Vitaly86!
You wrote on Thu, 20 Nov 08 10:30:31 GMT:

Vitaly86 V> Нужно сгенерить скрипт заполнения базы данными.
V> у IBExpert есть замечательная функция "Export data Into Script"
V> но, на сколько я понял, с её помощью можно создать скрипт либо на Insert либо на update
V> но хотелось бы совместить.зависит от версии.
сервера.
да и эксперта тоже.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665523
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
от версии.
сервера.
да и эксперта тоже.

IBExpert. version 2008.08.08
Firebird 2.0.4 (Win32 Build)
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665544
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Vitaly86!
You wrote on Thu, 20 Nov 08 10:37:44 GMT:

Vitaly86 V> IBExpert. version 2008.08.08
V> Firebird 2.0.4 (Win32 Build)тогда простым теледвижением не получится.

зы: у 2.1 есть MERGE

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665591
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И нетрадиционное заднее решение
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
update моя_таблица
  set поле_1 = значение_поля_1 
  .... 
  where ключ = значение_ключа;

insert into моя_таблица (ключ, поле_1...)
  select значение_ключа, значение_поля_1, ...
    from rdb$database
    where not exists (select * from моя_таблица where ключ = значение_ключа);
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665614
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
зы: у 2.1 есть MERGE

мне кажется MERGE, это несовсем то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
MERGE INTO customers c
  USING (SELECT * FROM customers_delta WHERE id >  10 ) cd
  ON (c.id = cd.id)
    WHEN MATCHED THEN
      UPDATE SET
        name = cd.name
    WHEN NOT MATCHED THEN
      INSERT (id, name)
      VALUES (cd.id, cd.name)
она же сравнивает две таблицы одной базы.
а мне нужен скрипт заполнения другой базы.
т.е на основе базы источника создаем скрипт - рассылаем клиентам, там запускаем - базы становятся "чуть более похожи". (допустим новые записи, которые есть у клиентов нам не интересны )
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665619
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryИ нетрадиционное заднее решение
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
update моя_таблица
  set поле_1 = значение_поля_1 
  .... 
  where ключ = значение_ключа;

insert into моя_таблица (ключ, поле_1...)
  select значение_ключа, значение_поля_1, ...
    from rdb$database
    where not exists (select * from моя_таблица where ключ = значение_ключа);

ок, как такой скрипт сгенерить с помощью IBExpert?
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665631
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Vitaly86!
You wrote on Thu, 20 Nov 08 10:58:32 GMT:

V> мне кажется MERGE, это несовсем то
V> она же сравнивает две таблицы одной базы.

ошибаешься.
она "сравивает" то, что напишешь.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665673
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
ошибаешься.
она "сравивает" то, что напишешь.

а какие варианты?
1. вместе со скриптом берем свою базу и делаем MERGE по таблицам из разных баз
2. в качестве таблицы источника данных используем external table
так?
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665695
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitaly86а какие варианты?
Например, выборку делать не из реальной таблицы, а формировать её текстом.

А ещё есть UPDATE OR INSERT.
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665700
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitaly86Мимопроходящий
от версии.
сервера.
да и эксперта тоже.

IBExpert. version 2008.08.08
Firebird 2.0.4 (Win32 Build)EXECUTE BLOCK
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665719
Vitaly86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryНапример, выборку делать не из реальной таблицы, а формировать её текстом.
external table ?
WildSeryА ещё есть UPDATE OR INSERT.
его может сгенерить IBExpert?

hvladEXECUTE BLOCK
там проде бы только EXECUTE PROCEDURE Statements
он генерит код вида
Код: plaintext
EXECUTE PROCEDURE имя_таблицы (значение_ключа, значение_поля_1 .... )
...
Рейтинг: 0 / 0
IBExpert. как сгенерить скрипт вида if exists ... then update else insert
    #35665749
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitaly86external table ?Нет.
Vitaly86его может сгенерить IBExpert?IBExpert может сгенирить _любой_ текст.
Смотрим IBEBlock.
Адрес с помощью почему-то не работает, но есть ..\IB Expert\Blocks\Samples, где можно посмотреть на примерах, что можно сделать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert. как сгенерить скрипт вида if exists ... then update else insert
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]