|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
Сделал доступ к веб сервису через внешнюю таблицу (спасибо SY за подсказку) и препроцессор скрипт. Документация не описывает передачу параметров в препроцессор, и синтакс внешних таблиц никак на такую возможность не намекает. Подскажите, кроме сохранения параметра в дисковый файл, есть еще варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 20:25 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL доступ к веб сервису через внешнюю таблицу Вы сначала задачу опишите, а не способ решения. А то у неофитов способы (почему-то всегда) через задницу странные. Задачи доступа к web-сервису обычно решаются не средствами СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:30 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL, Откройте для себя ETL-средства. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:48 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL Сделал доступ к веб сервису через внешнюю таблицу (спасибо SY за подсказку) и препроцессор скрипт. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:58 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL Документация не описывает передачу параметров в препроцессор, и синтакс внешних таблиц никак на такую возможность не намекает. Очень даже подсказывает - никаких явных параметров: If the preprocessor program requires any arguments (for example, gunzip -c), then you must specify the program name and its arguments in an executable shell script (or on Windows operating systems, in a batch (.bat) file). Shell scripts and batch files have certain requirements, as discussed in the following sections. ORACLE автоматом передает: The data file listed in the external table LOCATION clause should be referred to by $1. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 16:59 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
SY, Спасибо, значит я ничего не пропустил. Уже работает. Пришлось просто записать параметр в файл на диске, который препроцессор видит. dmdmdm, нужно было пополнять таблицу информацией от веб сервиса по команде с клиента. Пользователь нажимает кнопочку на экране, и через секунду видит все подробности. Чтобы реализовать, написал PL/SQL функцию Код: plsql 1.
, которая заодно кэширует запросы, чтоб по одному и тому же клиенту платный сервис много раз не дергать. Функция пишет параметр client_id в дисковый файл, а потом читает из внешней таблицы типа ORACLE_LOADER. Внешняя таблица вызывает мой ОС скрипт (препроцессор для внешних таблиц, появился в 11.2, как раз чем я пользуюсь), который берет параметр из файла и идет с ним по шифрованному каналу и логину трясти веб сервис. Данные с веб сервиса отмываются скриптом, и в формате подобному CSV отдаются парсеру Оракла, который их сует в таблицу. В кэше сохраняется что было получено, дату (кэши стареют) и какой пользователь заказывал (сервис платный). Ничего сложного, но практически все темы для меня новые, и мой вдобавок мой SOAP клиент настаивал на UTF-16. После добавления строчки в кэш-таблицу, я вызываю commit. Его действие локальное, т.к. для функции объявлена PRAGMA AUTONOMOUS_TRANSACTION; ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 19:53 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL, Просто нет слов... Это даже не небоскрёб из дерева это что-то эпичнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 20:03 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
Спасибо, без рекомендаций и советов форума такое бы сам не слепил ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 20:37 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL, А кнопычка на экране сразу к базе прикручена? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 20:51 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL, У меня только один вопрос. А почему это нельзя было по нормальному сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 20:55 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL Функция пишет параметр client_id в дисковый файл, а потом читает из внешней таблицы типа ORACLE_LOADER. не надо писать client_id в файл. надо больше ада. надо писать client_id в key-value таблицу, ключом будет имя файла, передаваемое в препроцессор. препроцессор должен заходить в базу, по известному ему имени файла читать значение client_id, и потом дергать веб-сервис. после получения данных из веб-сервиса отдаем их из препроцессора построчно, логгируя каждую строку в бд - на всякий случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 20:58 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
env НеофитSQL, У меня только один вопрос. А почему это нельзя было по нормальному сделать? Потому что когда я спрашивал как это лучше делать, почти все промолчали. Дело то ждать не будет. Это можно было сделать на клиенте, на сервере, или в среднем звене. Среднее звено было написано очень давно, и его стараются не трогать. Делать с клиента означает апгрейд, плюс распространение новых библиотек для SOAP, плюс мороки с паролем сервиса - его надо клиенту давать. Оставался сервер. UTL_HTTP мне добрые люди посоветовали не трогать, совать JAX в БД я не решился, поэтому веб сервис опрашивается из отдельного дочернего процесса, и обмен данными происходит через ОС пайп. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 22:12 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
нужно было пополнять таблицу информацией от веб сервиса по команде с клиента. Пользователь нажимает кнопочку на экране, и через секунду видит все подробности.нужно было пополнять таблицу информацией от веб сервиса по команде с клиента. Данная задача не требует наворотов с внешней таблицей, скриптами и пр. Отговорки "было написано очень давно" как раз и появляются, когда такие небоскребы достаются по наследству. Намекните контору, где вы это ваяете, чтобы от этого места ходить подальше. когда я спрашивал как это лучше делать, почти все промолчали. Извините, я отвлекался на работу, за которую деньги получаю. Для остальных, от которых вы ожидаете развернутого ответа в течение суток, оставьте информацию, когда и куда заходить за частью вашей зарплаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 08:41 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL Потому что когда я спрашивал как это лучше делать, почти все промолчали. если вам очень нужно вызвать сторонний код из БД - лучше вызывать его не из препроцессора, а из DBMS_SCHEDULER - он позволяет стартовать дочерние процессы за пределами БД, причем делать это асинхронно, в нужном порядке, без плясок с pq_concurrent_union и параметрами, сохраненными в файле на диске. грубо говоря, одновременно запускаем 5 scheduler jobs, которые готовят вам данные. дождавшись всех (или не всех - как вам удобно), подкладываем эти данные под external table, и читаем ее уже безо всяких сложных препроцессоров. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 08:49 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL Потому что когда я спрашивал как это лучше делать Так вы и не спрашивали "как лучше сделать". Вы спрашивали "как в union all не писать а-ля бейсик". Если бы изначально задача была поставлена в правильном виде, то первой же рекомендацией было бы создание ETL/ELT процесса загрузки данных из сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 09:27 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
env Если бы изначально задача была поставлена в правильном виде, то первой же рекомендацией было бы создание ETL/ELT процесса загрузки данных из сервиса. ETL - достаточно удобная штука для решения задач интеграции по данным. Но в плане интеграции приложений еще удобнее инструменты соответствующего (EAI) класса. https://www.gartner.com/reviews/market/application-integration-platforms ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 12:11 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
andrey_anonymous, У ТС это означало бы добавление ещё одного звена, а там и так всё плохо с имеющимися. Задача ТС в принципе не должна решаться со стороны БД, если требуется состояние ответа сервиса на момент обращения. Но автор топика при всей своей внешней борьбе за "правильность", тесты, проверки параметров в коде и т.п. тем не менее выбрал наиболее кривое решение, чтобы не трогать имеющееся легаси и создать сложноподдерживаемый велосипед для следующих поколений. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 12:40 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
Всем привет. Мой другой вопрос про UNION ALL к этой задаче совсем не относился, поэтому извините если все смешалось. У меня синхронный запрос который достает с интернета ценные 100 байт "прямо сейчас" по кнопке пользователя. Я пользуюсь DBMS scheduler в других местах (например, для импорта и автоматической обработки асинхронных данных, или ночной проверки данных БД по параметрам, где существующие механизмы целостности не помогают). Кстати про DBMS scheduler - где лучше посмотреть объяснение как исполнение джобов соотносится с сессиями? Например, если три джоба исполняются одновременно, они будут находиться в разных сессиях Оракла? > Задача ТС в принципе не должна решаться со стороны БД, если требуется состояние ответа сервиса на момент обращения. Насколько я знаю, такие задачи обычно решаются в application server, который сидит между БД и клиентом. Я внесу скромное предложение, что когда кто-то что-то хорошо знает и уже пишет ответ, вместо "так никто не делает" он/она конструктивно что-то предложит, например "в классической архитектуре систем БД, общение с веб сервисами делается на уровне application server". Такой кусочек знаний будет полезен не только ТС, но и другим. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 17:14 |
|
Параметризованная внешняя таблица
|
|||
---|---|---|---|
#18+
НеофитSQL У меня синхронный запрос который достает с интернета ценные 100 байт "прямо сейчас" по кнопке пользователя. Для этого использование СУБД не требуется от слова совсем. НеофитSQL если три джоба исполняются одновременно, они будут находиться в разных сессиях Оракла? да НеофитSQL Я внесу скромное предложение, что когда кто-то что-то хорошо знает и уже пишет ответ, Он сам решает, что достаточно написать и не обязан разжёвывать это тому, кто не не желает понимать нелепости своего решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 17:44 |
|
|
start [/forum/topic.php?fid=52&fpage=36&tid=1880883]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 463ms |
0 / 0 |