Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запуск скрипта по расписанию / 25 сообщений из 28, страница 1 из 2
19.03.2019, 18:46
    #39788603
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Добрый день.
Есть SQL-скрипт примерно на 400 строк:
1. Идет обращение к другой базе через DBlink
2. Создаются исходные таблицы с текущей датой в названии таблицы
3. Идет преобразование путем создания и удаления промежуточных таблиц на основе исходных
4. Формируются конечные таблицы

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

Задача запускать этот скрипт автоматически по расписанию, либо по обращению через Python.
Пробовал сделать PROCEDURE через EXECUTE IMMIDIATE, но похоже, что весь скрипт туда полностью вставить нельзя.
Код: sql
1.
2.
3.
4.
5.
6.
7.
create or replace procedure test
as 
begin 
    execute immediate 'drop table t1;
    create table t1 as
    (select * from t2)'; 
end; 


Код: sql
1.
2.
3.
begin 
   test; 
end;



Error report -
ORA-00911: неверный символ
ORA-06512: на "test", line 4
ORA-06512: на line 2
00911. 00000 - "invalid character"
*Cause: identifiers may not start with any ASCII character other than
letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain
any character other than a doublequote. Alternative quotes
(q'#...#') cannot use spaces, tabs, or carriage returns as
delimiters. For all other contexts, consult the SQL Language
Reference Manual.
*Action:

Как возможно автоматизировать эту задачу?
...
Рейтинг: 0 / 0
19.03.2019, 19:01
    #39788611
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
RoomonКак возможно автоматизировать эту задачу?

Бардак автоматизации не поддаётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.03.2019, 19:03
    #39788612
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
RoomonКак возможно автоматизировать эту задачу?
Велосипедостроительство вечно :)
Воспользуйтесь лучше ETL-инструментами.
...
Рейтинг: 0 / 0
19.03.2019, 19:11
    #39788620
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Dimitry Sibiryakov, почему же. Если автоматизировать бардак, то будет автоматизированный бардак ))

andrey_anonymous, согласен, что велосипед строю, но есть скрипт, который работает. Запускаю его по запросу коллег и высылаю результаты. Хотелось бы минимальными усилиями поставить на поток. С ETL-инструментами боюсь быстро не разберусь...

А если про конкретику говорить, то в рамках EXECUTE IMMIDIATE невозможно запустить последовательно несколько команд?
...
Рейтинг: 0 / 0
19.03.2019, 19:23
    #39788625
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
RoomonЕсли автоматизировать бардак, то будет автоматизированный бардак ))

Тогда cron тебе в руки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.03.2019, 19:24
    #39788627
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Roomonминимальными усилиямиа нажатие кнопки "выполнить скрипт" это максимальные усилия?
...
Рейтинг: 0 / 0
19.03.2019, 19:30
    #39788630
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Dimitry Sibiryakov, да, буду смотреть в эту сторону. Спасибо.

-2-, "нажатие кнопки" это не поставить на поток.
...
Рейтинг: 0 / 0
19.03.2019, 20:34
    #39788650
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Roomon,

1. execute immediate выполняет стейтмент, а не "скрипт" в твоем понимании.
2. зачем таблицу дропать? Чистить не вариант?
...
Рейтинг: 0 / 0
19.03.2019, 21:06
    #39788662
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
oragraf2. зачем таблицу дропать? Чистить не вариант?

Очевидно он прогулял лекцию на которой рассказывали о GTT.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.03.2019, 08:29
    #39788770
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
...
Рейтинг: 0 / 0
20.03.2019, 09:20
    #39788794
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Viewer+ Private Temporary Tables in Oracle Database 18c + пресловутый execute immediate на все манипуляции.
...
Рейтинг: 0 / 0
20.03.2019, 09:41
    #39788807
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
oragraf, я понял, что execute immediate выполняет только один стейтмент. Есть похожая штука, чтобы выполнить несколько стейтментов, не выделяя каждый отдельный стейтмент через execute immediate?

Таблицы могу и чистить (и временные использовать при необходимости), но это же всё равно будет несколько стейтментов, или нет?
...
Рейтинг: 0 / 0
20.03.2019, 10:30
    #39788851
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
RoomonЕсть похожая штука, чтобы выполнить несколько стейтментовSQL*Plus
...
Рейтинг: 0 / 0
20.03.2019, 11:13
    #39788885
Ikir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
RoomonА если про конкретику говорить, то в рамках EXECUTE IMMIDIATE невозможно запустить последовательно несколько команд?

Но никто не запрещает выполнить последовательность EXECUTE IMMIDIATE ...
...
Рейтинг: 0 / 0
20.03.2019, 13:01
    #39788979
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Roomonoragraf, я понял, что execute immediate выполняет только один стейтмент. Есть похожая штука, чтобы выполнить несколько стейтментов, не выделяя каждый отдельный стейтмент через execute immediate?

Таблицы могу и чистить (и временные использовать при необходимости), но это же всё равно будет несколько стейтментов, или нет?
Читаем определение, что есть statement в oracle. Немного думаем, пытаемся выполнить
Код: plsql
1.
2.
3.
 begin
   execute immediate 'begin null; null; null; end;';
 end;

, медитируем над результатом. Потом ищем инфу про DML и DDL и понимаем, что скрипт as is в execute immediate запихнуть не получится.
PS: python launcher.py script.sql засунуть в cron не подходит?
...
Рейтинг: 0 / 0
20.03.2019, 13:15
    #39788991
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
MazoHistчто скрипт as is в execute immediate запихнуть не получится

Код: plsql
1.
2.
3.
4.
5.
6.
begin
  execute immediate 'create table test_mazo as select * from dual connect by level < 100';
end;
/

select * from test_mazo;
...
Рейтинг: 0 / 0
20.03.2019, 13:16
    #39788992
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
merch, снимись с ручника.
...
Рейтинг: 0 / 0
20.03.2019, 13:18
    #39788993
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Elic, вероятно, чтение темы было слишком поверхностным.
...
Рейтинг: 0 / 0
20.03.2019, 13:24
    #39788997
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
ViewerDimitry SibiryakovGTT
+ Private Temporary Tables in Oracle Database 18c Этакий унитаз, у которого, сделав дела, не нужно руками дергать ручку смыва.
...
Рейтинг: 0 / 0
20.03.2019, 15:04
    #39789093
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
[quot AmKad]ViewerЭтакий унитаз, у которого, сделав дела, не нужно руками дергать ручку смыва.

я мечтал о тмп табличках (пусть и global) без генерации undo/redo (без возможности rollback)

.....
stax
...
Рейтинг: 0 / 0
20.03.2019, 15:42
    #39789121
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Staxя мечтал о тмп табличках (пусть и global) без генерации undo/redo (без возможности rollback)Есть с 8.0
...
Рейтинг: 0 / 0
20.03.2019, 16:57
    #39789166
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
-2-Staxя мечтал о тмп табличках (пусть и global) без генерации undo/redo (без возможности rollback)Есть с 8.0

не знал
для общего развития можно ссылку?

.....
stax
...
Рейтинг: 0 / 0
20.03.2019, 17:14
    #39789169
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
Staxдля общего развития
temporary tablespace не защищается redo :)
...
Рейтинг: 0 / 0
20.03.2019, 17:27
    #39789171
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
-2-Есть с 8.0

Но с UNDO. Без UNDO в 12C если TEMP_UNDO_ENABLED=TRUE.

SY.
...
Рейтинг: 0 / 0
20.03.2019, 17:31
    #39789173
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск скрипта по расписанию
SYНо с UNDO. Без UNDO в 12C если TEMP_UNDO_ENABLED=TRUE.


Упс, имел ввиду "но с REDO для UNDO". Без REDO для UNDO в 12C если TEMP_UNDO_ENABLED=TRUE

SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запуск скрипта по расписанию / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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