Получать данные из базы данных Oracle в определенное время и затем отправлять их в базу данных в Stack Overflow

Опишите идею проекта:

Я работаю в системе, которая работает на базе данных Oracle версии 8i. где я хотел бы выполнить запрос, который выполняется автоматически ежемесячно (с использованием php или java), чтобы получить некоторые данные о платежах от некоторых пользователей в следующем месяце, а затем опубликовать эти данные в Google Firebase.

Опишите мой вопрос:

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

Я не знаю, может ли это быть сделано в коде php, или я должен использовать внешнюю программу или службу для автоматического запуска моей функции в определенное время

Пример псевдокода:

очень простой пример, чтобы объяснить мой процесс, фактический код будет более организованным. ваши идеи очень ценятся

// some Proramming language API to call myFunction() automatically
/* this is what I need  */

// check date
if (today() = 20-currentMonth-currentYear)
(
myFunction()
)

function myFunction()
{
//conneting to database
connect to oracle(connectionURL, username, password)
// running connection
run connection

// executing updated query
execute query(Select * from tableName where date 01-nextMonth-currentYear)

// fetching query results
Loop throw query result

// prepare JSON format
add result to json(object or array)

// close database connection
close oracle connection// sending json to firebase
send json result to Firebase RestAPI
}

язык программирования:

PHP

1

Решение

Черт возьми, 8i? Это древняя часть программного обеспечения.

В любом случае: вам не нужен ни PHP, ни внешняя программа — все, что вам нужно — это запланированная работа в базе данных. DBMS_JOB должен сделать это. Вот документация 8i для этого пакета: https://docs.oracle.com/cd/A87860_01/doc/server.817/a76956/jobq.htm#5727

Вот пример того, как это сделать:

SQL> set serveroutput on
SQL> -- creating a dummy procedure; yours would collect data
SQL> create or replace procedure p_test
2  is
3  begin
4     null;
5  end p_test;
6  /

Procedure created.

SQL> -- schedule a job. NEXT_DATE says when it is executed for the first time,
SQL> -- while INTERVAL says when to re-execute it -> monthly, on 5th of every month,
SQL> -- at 14:30
SQL> declare
2     x   number;
3  begin
4     sys.dbms_job.submit (
5        job         => x,
6        what        => 'p_test;',
7        next_date   => to_date ('05.12.2017 14:30:00', 'dd.mm.yyyy hh24:mi:ss'),
8        interval    => 'add_months(to_date(''05.12.2017'', ''dd.mm.yyyy''), 1) + 14 / 24 + 30 / (24*60)',
9        no_parse    => false);
10     sys.dbms_output.put_line ('Job Number is: ' || to_char (x));
11     commit;
12  end;
13  /
Job Number is: 2895612

PL/SQL procedure successfully completed.

SQL> -- check job info
SQL> select * from user_jobs where job = 2895612;

Теперь, как собирать данные. К сожалению, я не знаю, как перенести его в Firebase (если бы мне пришлось, я бы назвал следующие ключевые слова: ссылка на базу данных, гетерогенные сервисы. Или, конечно, Google для этого). Надеюсь, кто-то еще сможет помочь.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]