sql开发人员每日表删除/创建任务

6za6bjd0  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(421)

我每天都要更新数据库中的两个表。。。一个基于从其他源运行的报表,我手动删除表并从excel导入表以替换它。
然后我需要运行一个sql代码,该代码使用第一步中刷新的数据执行计算,并创建一个表,然后用于tableau。
简而言之,步骤如下: DROP TABLE table1 PURGE; 从excel手动插入数据,如表1所示,
下表\u表清洗;
在此处创建表\u tableau作为sql计算;
为表创建索引
授予选择权。。。授予对表的访问权。。
我的问题是,有没有一种方法(如果我在同一个文件夹中以相同的名称存储文件)来存储sql将执行的任务序列?有点像一键宏?

gojuced7

gojuced71#

在我看来,简而言之,步骤应该是:
确保将excel文件保存为csv文件(文本文件)
为什么?因为您稍后会将其用作外部表。你只是从中读取数据,没有什么特别的事情要做;只需使用创建外部表时使用的相同名称命名csv文件
以下步骤今天只能做一次,以后再也不做;在oracle中,我们通常不进行日常的删除和重新创建表

CREATE TABLE table1 (...) ORGANIZATION EXTERNAL (...);
CREATE TABLE table_tableau (...);
CREATE INDEX for table_tableau;
GRANT SELECT ON table_tableau TO whomever_you_want;

日常任务:不需要做任何事情 table1 ; 一旦替换csv文件,您将只看到新数据。没有加载数据,什么都没有。创建一个存储过程来完成剩余的工作

CREATE OR REPLACE PROCEDURE p_daily AS
BEGIN
  EXECUTE IMMEDIATE 'TRUNCATE TABLE table_tableau';
  INSERT INTO table_tableau SELECT ... calculations here FROM table1;
END;

最后:如果您可以在同一时间(例如上午8:00)自动获取csv文件,您可以使用 DBMS_JOB 或者 DBMS_SCHEDULER 安排 P_DAILY 在一天中所需时间(例如08:30)运行的程序。
如果你包括 UTL_MAIL 召唤 P_DAILY ,程序将通知您(或其他人)作业已完成。
这意味着:你只要坐着等,Oracle会为你做一切。

相关问题