ETL调度开发(2)——配置表说明

根据需求我们需要创建部分所需的配置表,各表说明如下:

1、文件FTP主机配置表:SHELL_HOST_CFG


COLUMN_NAME


DATA_TYPE


COMMENTS


LATN_ID


NUMBER


 


HOST_ID


NUMBER


主机ID


HOST_NAME


VARCHAR2


主机名


HOST_IP


VARCHAR2


主机IP


HOST_PORT


VARCHAR2


主机端口


USERNAME


VARCHAR2


用户名


PASSWD


VARCHAR2


密码


HOST_PATH


VARCHAR2


默认路径


NOTE


VARCHAR2


备注


STATE_DATE


DATE


时间

create table SHELL_HOST_CFG
(
  host_id    NUMBER(2) not null,
  host_name  VARCHAR2(30),
  host_ip    VARCHAR2(15) not null,
  host_port  VARCHAR2(10),
  username   VARCHAR2(20),
  passwd     VARCHAR2(20),
  host_path  VARCHAR2(60),
  note       VARCHAR2(50),
  state_date DATE,
  latn_id    NUMBER(4)
);
comment on column SHELL_HOST_CFG.host_id
  is '主机ID';
comment on column SHELL_HOST_CFG.host_name
  is '主机名';
comment on column SHELL_HOST_CFG.host_ip
  is '主机IP';
comment on column SHELL_HOST_CFG.host_port
  is '主机端口';
comment on column SHELL_HOST_CFG.username
  is '用户名';
comment on column SHELL_HOST_CFG.passwd
  is '密码';
comment on column SHELL_HOST_CFG.host_path
  is '默认路径';
comment on column SHELL_HOST_CFG.note
  is '备注';
comment on column SHELL_HOST_CFG.state_date
  is '时间';
-- Create/Recreate primary, unique and foreign key constraints
alter table SHELL_HOST_CFG
  add constraint PK_SHELL_HOST_CFG primary key (HOST_ID)
  using index
  tablespace TBS_CSS_INT_IDX;

2、文件入库配置表 SHELL_PROC_GATHER_CFG


COLUMN_NAME


DATA_TYPE


COMMENTS


PROC_ID


NUMBER


流程ID


OWNER_NAME


VARCHAR2


目标库模式名


FILE_HEAD


VARCHAR2


文件头如果要添加日志如:BML.MKT_LO_D.${l_date}


DATE_FORMAT


VARCHAR2


日期格式 如:yyyymmdd


TARGET_TABLE


VARCHAR2


目标表


FIELD_LIST


VARCHAR2


控制文件中的字段


HOST_ID


NUMBER


主机ID,配置表见:shell_host_cfg


SRC_DIR


VARCHAR2


源文件目录


FILE_TAIL


VARCHAR2


文件后缀


CHECK_FILE


VARCHAR2


check文件


LATN_ID


NUMBER


本地网标识


DESC_DIR


VARCHAR2


目标目录


TERMINATE


VARCHAR2


分隔符


IS_CHECK


CHAR


是否需要check文件


AFTER_FTP_SHELL


VARCHAR2


FTP之后需要执行的shell命令


BEFORE_LOAD_SQL


VARCHAR2


SQLLDR之前预操作


DATA_FILES


VARCHAR2


数据文件名称


IF_CHECK_DDL


CHAR


是否检查表结构


TAB_DDL


VARCHAR2


表结构来源


SHORT_PROC_ID


VARCHAR2


流程短号


CHARACTERSET


VARCHAR2


导入使用的字符集,默认UTF8


SHELL_AFTER_ALL


VARCHAR2


导入完成后需要执行的SHELL脚本

create table SHELL_PROC_GATHER_CFG
(
  proc_id         NUMBER(20) not null,
  owner_name      VARCHAR2(200),
  file_head       VARCHAR2(200),
  date_format     VARCHAR2(100),
  target_table    VARCHAR2(100),
  field_list      VARCHAR2(4000),
  host_id         NUMBER(12),
  src_dir         VARCHAR2(1000),
  file_tail       VARCHAR2(200),
  check_file      VARCHAR2(100),
  latn_id         NUMBER(4),
  desc_dir        VARCHAR2(1000),
  terminate       VARCHAR2(100),
  is_check        CHAR(1),
  after_ftp_shell VARCHAR2(4000),
  before_load_sql VARCHAR2(4000),
  data_files      VARCHAR2(1000),
  if_check_ddl    CHAR(1),
  tab_ddl         VARCHAR2(4000),
  short_proc_id   as (SUBSTR(TO_CHAR("PROC_ID"),1,4)),
  characterset    VARCHAR2(100) default 'UTF8',
  shell_after_all VARCHAR2(4000)
);
-- Add comments to the columns
comment on column SHELL_PROC_GATHER_CFG.proc_id
  is '流程ID';
comment on column SHELL_PROC_GATHER_CFG.owner_name
  is '目标库模式名';
comment on column SHELL_PROC_GATHER_CFG.file_head
  is '文件头如果要添加日志如:BML.MKT_LO_D.${l_date}';
comment on column SHELL_PROC_GATHER_CFG.date_format
  is '日期格式 如:yyyymmdd';
comment on column SHELL_PROC_GATHER_CFG.target_table
  is '目标表';
comment on column SHELL_PROC_GATHER_CFG.field_list
  is '控制文件中的字段';
comment on column SHELL_PROC_GATHER_CFG.host_id
  is '主机ID,配置表见:shell_host_cfg';
comment on column SHELL_PROC_GATHER_CFG.src_dir
  is '源文件目录';
comment on column SHELL_PROC_GATHER_CFG.file_tail
  is '文件后缀';
comment on column SHELL_PROC_GATHER_CFG.check_file
  is 'check文件';
comment on column SHELL_PROC_GATHER_CFG.latn_id
  is '本地网标识';
comment on column SHELL_PROC_GATHER_CFG.desc_dir
  is '目标目录';
comment on column SHELL_PROC_GATHER_CFG.terminate
  is '分隔符';
comment on column SHELL_PROC_GATHER_CFG.is_check
  is '是否需要check文件';
comment on column SHELL_PROC_GATHER_CFG.after_ftp_shell
  is 'FTP之后需要执行的shell命令';
comment on column SHELL_PROC_GATHER_CFG.before_load_sql
  is 'SQLLDR之前预操作';
comment on column SHELL_PROC_GATHER_CFG.data_files
  is '数据文件名称';
comment on column SHELL_PROC_GATHER_CFG.if_check_ddl
  is '是否检查表结构';
comment on column SHELL_PROC_GATHER_CFG.tab_ddl
  is '表结构来源';
comment on column SHELL_PROC_GATHER_CFG.short_proc_id
  is '流程短号';
comment on column SHELL_PROC_GATHER_CFG.characterset
  is '导入使用的字符集,默认UTF8';
comment on column SHELL_PROC_GATHER_CFG.shell_after_all
  is '导入完成后需要执行的SHELL脚本';
-- Create/Recreate primary, unique and foreign key constraints
alter table SHELL_PROC_GATHER_CFG
  add constraint PK_SHELL_PROC_GATHER_CFG primary key (PROC_ID)
  using index
  tablespace TBS_CSS_INT_IDX;
alter table SHELL_PROC_GATHER_CFG
  add constraint FK_SHELL_PROC_GATHER_CFG foreign key (PROC_ID)
  references SHELL_PROC_RUN_CFG (PROC_ID) on delete cascade;
alter table SHELL_PROC_GATHER_CFG
  add constraint FK_SHELL_PROC_GATHER_CFG_HOST foreign key (HOST_ID)
references SHELL_HOST_CFG (HOST_ID);

3、流程节点配置表SHELL_PROC_RUN_CFG


COLUMN_NAME


DATA_TYPE


COMMENTS


PROC_ID


NUMBER


流程ID


PROC_NAME


VARCHAR2


流程名称


REPORT_ID


NUMBER


报表ID


REPORT_NAME


VARCHAR2


报表名称


RUN_DAY


VARCHAR2


运行日期,月报需要配置


RUN_HOUR


VARCHAR2


运行小时,月报,日报,周报需要配置


RUN_MINUTE


VARCHAR2


运行分钟,月报,日报,周报,小时报表需要配置


LAST_SUCC_CYCLE


VARCHAR2


上次执行成功账期


RUN_TYPE


VARCHAR2


运行类型(1:月报 2:日报 3:周报 4:小时报 5:分钟报表 6:只执行一次)


RUN_SQL


VARCHAR2


运行SQL


LATN_ID


NUMBER


本地网标识


STATE


CHAR


流程状态


MODIFY_DT


DATE


新增修改时间


OWNER


VARCHAR2


所有者


ORDER_ID


NUMBER


执行顺序


ERR_CNT


NUMBER


同一账期内允许重复运行的报错次数


IF_EXECUTED


CHAR


针对只执行一次的调度


ETL_TYPE


VARCHAR2


调度类型  SHELL:需要在RUN_SQL中填写 SHELL文件全路径以及需要传入的参数


IF_CONVERT


CHAR


是否需要转换数据,如后续抽取整合到其他用户下的结果表


SHORT_PROC_ID


VARCHAR2


 


GATHER_TYPE


VARCHAR2


EDW方式或者ODSO方式


APPOINT_TIME


VARCHAR2


约定时间


RUN_WEEK_DAY


VARCHAR2


 

create table SHELL_PROC_RUN_CFG
(
  proc_id         NUMBER(20) not null,
  proc_name       VARCHAR2(4000),
  report_id       NUMBER(12),
  report_name     VARCHAR2(200),
  run_day         VARCHAR2(2),
  run_hour        VARCHAR2(2),
  run_minute      VARCHAR2(2),
  last_succ_cycle VARCHAR2(100),
  run_type        VARCHAR2(20),
  run_sql         VARCHAR2(4000),
  latn_id         NUMBER(4),
  state           CHAR(1) default 'A',
  modify_dt       DATE default SYSDATE,
  owner           VARCHAR2(100),
  order_id        NUMBER(12),
  err_cnt         NUMBER(12),
  if_executed     CHAR(1) default 'N',
  etl_type        VARCHAR2(100),
  if_convert      CHAR(1) default 'Y',
  short_proc_id   as (SUBSTR(TO_CHAR("PROC_ID"),1,4)),
  gather_type     VARCHAR2(20) default 'EDW',
  appoint_time    VARCHAR2(100),
  run_week_day    VARCHAR2(2) default 0
);
-- Add comments to the columns
comment on column SHELL_PROC_RUN_CFG.proc_id
  is '流程ID';
comment on column SHELL_PROC_RUN_CFG.proc_name
  is '流程名称';
comment on column SHELL_PROC_RUN_CFG.report_id
  is '报表ID';
comment on column SHELL_PROC_RUN_CFG.report_name
  is '报表名称';
comment on column SHELL_PROC_RUN_CFG.run_day
  is '运行日期,月报需要配置';
comment on column SHELL_PROC_RUN_CFG.run_hour
  is '运行小时,月报,日报,周报需要配置';
comment on column SHELL_PROC_RUN_CFG.run_minute
  is '运行分钟,月报,日报,周报,小时报表需要配置';
comment on column SHELL_PROC_RUN_CFG.last_succ_cycle
  is '上次执行成功账期';
comment on column SHELL_PROC_RUN_CFG.run_type
  is '运行类型(1:月报 2:日报 3:周报 4:小时报 5:分钟报表 6:只执行一次)';
comment on column SHELL_PROC_RUN_CFG.run_sql
  is '运行SQL';
comment on column SHELL_PROC_RUN_CFG.latn_id
  is '本地网标识';
comment on column SHELL_PROC_RUN_CFG.state
  is '流程状态';
comment on column SHELL_PROC_RUN_CFG.modify_dt
  is '新增修改时间';
comment on column SHELL_PROC_RUN_CFG.owner
  is '所有者';
comment on column SHELL_PROC_RUN_CFG.order_id
  is '执行顺序';
comment on column SHELL_PROC_RUN_CFG.err_cnt
  is '同一账期内允许重复运行的报错次数';
comment on column SHELL_PROC_RUN_CFG.if_executed
  is '针对只执行一次的调度';
comment on column SHELL_PROC_RUN_CFG.etl_type
  is '调度类型  SHELL:需要在RUN_SQL中填写 SHELL文件全路径以及需要传入的参数';
comment on column SHELL_PROC_RUN_CFG.if_convert
  is '是否需要转换数据,如后续抽取整合到其他用户下的结果表';
comment on column SHELL_PROC_RUN_CFG.gather_type
  is 'EDW方式或者ODSO方式';
comment on column SHELL_PROC_RUN_CFG.appoint_time
  is '约定时间';
-- Create/Recreate primary, unique and foreign key constraints
alter table SHELL_PROC_RUN_CFG
  add constraint PK_SHELL_PROC_RUN_CFG primary key (PROC_ID)
  using index
  tablespace TBS_CSS_INT_IDX;

4、入库日志表SHELL_PROC_RUN_LOG


COLUMN_NAME


DATA_TYPE


COMMENTS


PROC_ID


NUMBER


流程ID


STAT_CYCLE_ID


NUMBER


账期


RUN_STATE


VARCHAR2


运行状态 0:运行成功  1:未运行 2:运行中 3:报错终止 其他:运行报错


RUN_MSG


VARCHAR2


运行情况


START_TIME


DATE


开始时间


END_TIME


DATE


结束时间


ERR_CNT


NUMBER


报错次数


LATN_ID


NUMBER


本地网标识


SID


NUMBER


会话ID


SERIAL#


NUMBER


系列号


INST_ID


NUMBER


数据库实例ID(针对多实例)


RUN_TYPE


VARCHAR2


SPID


NUMBER


IS_SYNC


VARCHAR2


日志状态是否已经同步


SHORT_PROC_ID


VARCHAR2

create table SHELL_PROC_RUN_LOG
(
  proc_id       NUMBER(20),
  stat_cycle_id NUMBER(20),
  run_state     VARCHAR2(100),
  run_msg       VARCHAR2(4000),
  start_time    DATE default SYSDATE,
  end_time      DATE,
  err_cnt       NUMBER(12),
  latn_id       NUMBER(4),
  sid           NUMBER,
  serial#       NUMBER,
  inst_id       NUMBER,
  run_type      VARCHAR2(20),
  spid          NUMBER,
  is_sync       VARCHAR2(100) default 'N',
  short_proc_id as (SUBSTR(TO_CHAR("PROC_ID"),1,4))
);
-- Add comments to the columns
comment on column SHELL_PROC_RUN_LOG.proc_id
  is '流程ID';
comment on column SHELL_PROC_RUN_LOG.stat_cycle_id
  is '账期';
comment on column SHELL_PROC_RUN_LOG.run_state
  is '运行状态 0:运行成功  1:未运行 2:运行中 3:报错终止 其他:运行报错';
comment on column SHELL_PROC_RUN_LOG.run_msg
  is '运行情况';
comment on column SHELL_PROC_RUN_LOG.start_time
  is '开始时间';
comment on column SHELL_PROC_RUN_LOG.end_time
  is '结束时间';
comment on column SHELL_PROC_RUN_LOG.err_cnt
  is '报错次数';
comment on column SHELL_PROC_RUN_LOG.latn_id
  is '本地网标识';
comment on column SHELL_PROC_RUN_LOG.sid
  is '会话ID';
comment on column SHELL_PROC_RUN_LOG.serial#
  is '系列号';
comment on column SHELL_PROC_RUN_LOG.inst_id
  is '数据库实例ID(针对多实例)';

以上几个配置表是文件调度的基础表,当然如果有前后置关系的话,还可以根据需要创建如下关系表:

create table SHELL_PROC_RUN_RELA
(
  proc_id     NUMBER(20),
  sum_proc_id NUMBER(20),
  comments    VARCHAR2(200),
  modify_dt   DATE default SYSDATE
)
tablespace TBS_CSS_RPT_4

ETL调度开发(2)——配置表说明

时间: 2024-11-20 13:03:54

ETL调度开发(2)——配置表说明的相关文章

ETL调度开发(1)——编写说明

前言: 在数据库运行维护过程中经常会需要在系统之间进行文件传输,对数据进行抽取.转换.整合等操作.并且在数据整合之后进行统计调度,这里将会对本人开发的一个ETL调度进行详细的说明. 需求概述: 调度分为如下方式: ü  一个是SHELL编写的ETL调度,支持小时.日.周.月文件的调度. ü  一个是流程调度,主要是根据配置表调用指定过程,并发执行. 进程描述: 文件调度进程每分钟起一次,文件调度后的后续处理进程也是每分钟起一次,自动预警进程每5分钟检查一次. 预警描述: 每日文件在指定时间内未到

ETL调度开发(4)——FTP加载文件子程序

ETL工具中最基础的功能是加载远程服务器的文件,如下小程序以二进制方式获取远程服务器上的文件: #!/usr/bin/bash #created by lubinsu #2014 source ~/.bash_profile filename=$6 srcdir=$4 descdir=$5 ftpip=$1 ftpusr=$2 ftppwd=$3 #get files ftp -i -in <<! open ${ftpip} user ${ftpusr} ${ftppwd} bin cd ${

ETL调度开发(5)——连接数据库执行数据库命令子程序

ETL调度中读写数据信息,都需要连接数据库,下面的子程序通过传入的数据库连接字符串和数据库命令(或SQL)执行所需要的操作: #!/usr/bin/bash #created by lubinsu #2014 source ~/.bash_profile values=`sqlplus -S $1 << EOF set heading off feedback off pagesize 0 verify off echo off WHENEVER SQLERROR exit SQL.SQLCO

ETL调度开发(5)——连接数据库运行数据库命令子程序

ETL调度中读写数据信息,都须要连接数据库,以下的子程序通过传入的数据库连接字符串和数据库命令(或SQL)运行所须要的操作: #!/usr/bin/bash #created by lubinsu #2014 source ~/.bash_profile values=`sqlplus -S $1 << EOF set heading off feedback off pagesize 0 verify off echo off WHENEVER SQLERROR exit SQL.SQLCO

SAP 配置表记录创建人/创建日期/创建时间/更改人/更改日期/更改时间

在实际开发需求中,为了使客制功能具有灵活的可配置性,通常采用开发功能+配置表的形式处理.有些客制的配置功能需要追溯到谁在什么时候增加了什么配置,或者谁在什么时候更改了什么位置,配置表的Log功能就显得很有必要了.以下过程说明SAP在配置表中如何实现配置表的Log功能. 说明:本文中的截图皆为作者本人编写和制作,如果转载或引用请务必通知作者本人!!! (1)建立配置表 建立配置表,在配置表中增加建立者.建立日期.建立时间.更改者.更改日期.更改时间: (2)维护表维护生成器: 在菜单栏:实用程序-

系统设计与架构笔记:ETL工具开发和设计的建议

最近项目组里想做一个ETL数据抽取工具,这是一个研发项目,但是感觉公司并不是特别重视,不重视不是代表它不重要,而是可能不会对这个项目要求太高,能满足我们公司的小需求就行,想从这个项目里衍生出更多的东西估计难.昨天领导让我写写自己的见解,今天写了点,不过说见解还真不敢,所以取了个名字叫建议了,今天把这个文档贴到自己博客里和大伙分享分享. 贴文档之前,我想很多朋友估计并不熟悉ETL,如果接粗过数据挖掘一定对ETL很熟悉了,ETL是数据挖掘里非常重要的一环,具体什么是ETL,大家看下面这段文字: ET

Mybatis开发的配置

数据库访问层:将数据库或者其它存储的数据转换为内存的对象数据. 业务逻辑层:将内存的数据加工处理 UI层(界面层):负责数据的展示.-----MVC来处理. 数据持久化的概念:将存储在其它地方的数据转换为内存中的数据的这一过程称之为数据持久化的过程. 比如oracle开发,userinfo表 Model:数据模型    R:relation:关联    Object:对象 关键点:每条数据对应是一个实例化的有数据的对象. 2.回顾JDBC的操作: 3.ORM的框架: 1)将数据库表与对象进行映射

Visual studio 通用开发环境配置:SDL,FFMPEG为例

引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库目录(lib) 配置库文件的动态链接库(dll),这一步是很多人容易忽略的.上面配置好包含目录和库目录,只是开发环境配置完成了,没有配置好dll,在使用该库的程序运行时,会造成操作系统无法加载库对应的动态链接库.下面以SDL的配置为例,详细说明是如何配置的. SDL在visual studio下的开

Java项目(2)——Java开发环境配置|JDK与JRE

C盘扩容--修复Oracle--修改注册表--Windows无法启动--重做系统--重新配置Java开发环境,外加操作考试系统,这三天过的犹如做梦一般.自己写个Java开发环境配置的小总结,做任何事需要的就是一种思路,要懂得来龙去脉,不然自己会死得很惨. 基本步骤就是一系列安装: Jdk Oracle 服务器客户端 Plsql MyEclipse 配置MyEclipse的jdk和tomcat 设置环境变量(jdk和Oracle) plsql连接到Oracle 在配置过程中发现有的教程涉及Jre的