在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase

Posted

技术标签:

【中文标题】在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase【英文标题】:Retrieve data from Oracle Database at specific datetime then post them to firebase in php 【发布时间】:2017-12-17 06:40:45 【问题描述】:

描述项目构想:

我正在开发在 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

【问题讨论】:

嗨,我认为您可以创建一个简单的 jar/java 程序,它可以使用 crontab(linux,unix)task scheduler(windows) 来执行整个过程并安排运行该程序,这两者都已经内置在各自的系统中& 非常灵活地以 x 间隔、y 时间运行作业。这比设计自己的 cron 调度程序更有效。 这是一个不错的方法,我会尝试整个过程 【参考方案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(如果必须,我会提到以下关键字:数据库链接、异构服务。或者,当然是谷歌)。希望其他人能够提供帮助。

【讨论】:

非常感谢您的帮助,让 Oracle 每月创建数据是我的计划,然后我将创建的作业上传到 Firebase,我关心的是每月运行我的脚本(php ) 或任何其他语言将我的数据上传到 Firebase。实际上,@pOrinG 先生提出了一个不错的方法,我会尝试一下

以上是关于在特定日期时间从 Oracle 数据库中检索数据,然后在 php 中将它们发布到 firebase的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中使用特定日期范围和聚合从 MongoDB 数据库中检索数据?

检索日期并根据用户时区将其转换为特定时区

使用时间通过php从数据库中检索特定内容

使用时间通过php从数据库中检索特定内容

通过只知道没有时间的日期从表中选择 (ORACLE)

Oracle DataReader 在 GetDateTime 上出错