微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Oracle 转换到 BigQuery

如何解决从 Oracle 转换到 BigQuery

-- LOG_QUERY  (Procedure) 
--
CREATE OR REPLACE Procedure EXAMPLE
(
  THREAD_ID             STRING,PID                   NUMERIC,MODULE                STRING,SUBMODULE             STRING,SCRIPT_NAME           STRING,NUMSEQ                NUMERIC,sql_ID                STRING,REQ_1                 STRING,REQ_2                 STRING,TS_START_TIME         TIMESTAMP,TS_END_TIME           TIMESTAMP,RC_sql                NUMERIC,RC_ORA                NUMERIC,NB_ROWS               NUMERIC,INTERFACE_ID          STRING,TS                    DATE
)

BEGIN Pragma AS AUTONOMOUS_TRANSACTION;

TimeElapsed NUMERIC;

Begin
    TimeElapsed := Extract(Day From TS_END_TIME - TS_START_TIME) * 24 * 60 * 60 * 1000 
                 + Extract(Hour From TS_END_TIME - TS_START_TIME) * 60 * 60 * 1000 
                 + Extract(Minute From TS_END_TIME - TS_START_TIME) * 60 * 1000 
                 + Round(Extract(Second From TS_END_TIME - TS_START_TIME) * 1000)
    ;
                 

    Execute Immediate '
    Insert Into EXAMPLETABLE
    (
      THREAD_ID,PID,NUMSEQ,sql_ID,sql,SCRIPT_NAME,SUBMODULE_NAME,MODULE_NAME,TS_START_TIME,TS_END_TIME,TIME_ELAPSED,RC_sql,RC_ORA,NB_ROWS,INTERFACE_ID,TIMESTAMP
    ) Values (
      :thread_id,:pid,:numseq,:sql_id,:sql,:script_name,:submodule,:module,:ts_start_time,:ts_end_time,:time_elapsed,:rc_sql,:rc_ora,:nb_rows,:interface_id,:ts
    )'
    Using
      THREAD_ID,REQ_1||REQ_2,SUBMODULE,MODULE,TimeElapsed,TS
    ;
    Commit Write Batch Nowait ;
Exception
    When Others Then NULL;
End;

上面的代码是原始代码,不幸的是我无法取得任何进展,我坚持使用 Pragma 并试图找到一种方法提取日期,将“-”替换为 date_diff,非常感谢。这是我的第一篇文章,抱歉,如果我不是很清楚,我需要的是转换为 sql 标准以在 bigquery 上运行它,非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。