文章目录
- 二、流程规范
- 三、手动调度
- 五、日志轨迹
简述:
将ods推送的数据文件,加载到数据库的临时B表中,然后通过存储过程将临时B表中的数据同步到目标A表中。
注:临时B表结构和目标A表表结构必须一致,同步失败。
一、基础资料准备
1.1.表名规约
ods同步表的表名称、字段名称、字段数量规范,双方需要提前约定好,一旦约定好不允许修改,否则加载数据和同步数据会失败。
1.2.设计1套临时表和1套同构层表
临时B表作用:将ods推送的数据文件内容加载到数据库的临时表中,每次执行脚本临时表中的数据会清空。
注:临时B表可以理解为缓冲区
同构层表作用:保存或者备份推送过来的数据,数据不会也不允许更改。
同构层表目的:查阅数据问题可以直接查阅同构层表的数据,不用请求其他系统咨询,减少时间损耗和提高数据区配的效率。
1.3.存储过程
设计与表关系为1:1的存储过程
存储过程作用:将临时B表中的数据同步到目标的A表中。
注:同步数据种类:有全量-0和增量-1
二、流程规范
2.1. 生成控制文件(.ctl)
2.2. 拉取ods推送的数据文件
2.3. 数据加载+数据同步
将数据文件的数据加载到临时B表 把临时表到B表数据同步到目标A表
#进入拉取的某一天数据文件的目录
#1.将数据文件中的数据加载到数据库中的临时B表中
#2.将数据库中的临时B表中的数据同步到目标A表中
注:run_sqlldr.sh这个脚本做了2件事情
三、手动调度
如当天的调度出现问题,修正后,想手动指定跑某张表的数据
3.1. 到下载的数据文件路径:
例:/app/jiazai/sql_loadv1.0/loaded/20180918
3.2. 数据文件筛选
修改/app/jiazai/sql_loadv1.0/loaded/加载的数据文件日期/f.unl
:只保留需要加载的批次表信息(简言之,那个表的数据没有加载成功,只留下对应这个表的数据文件即可。
这是有数据的全部数据文件)
案例:
如果:20201027这一天dbx_ljtempfee 表数据加载失败,就留下dir.ods.dbx_ljtempfee.20201027.000.01.i
这一行,把其他数据文件删除。
3.3. 将要加载的表的备份表清空;
例:T01_INDV_CUST_HB
修改/app/jiazai/sql_loadv1.0/sql/truncateyw.sql
只保留TRUNCATE TABLE T01_INDV_CUST_HB;
在/app/jiazai/sql_loadv1.0/loaded/20201027
路径下执行
3.4. 数据加载脚本执行
3.5. sql还原
将/app/jiazai/sql_loadv1.0/sql/truncateyw.sql
还原
四、轮询定时调度
定时每天调用/app/jiazai/sql_loadv1.0/hxloadupgrade.sh
自动将前一天的数据加载到行协test用户下的表中。
4.1. 设置脚本执行频次
编辑定时任务配置文件:
4.2. 设置执行频次
4.3. 定时任务查看
五、日志轨迹
第一次初始化:
待ODS将全部数据文件推送至数据交换平台后,手动在 /app/jiazai/sql_loadv1.0路径下执行sh load.sh 要加载的数据文件夹名(例:sh load.sh 20201027)
生成的日志文件在以下两个文件夹下:
/app/jiazai/sql_loadv1.0/hx_loadlog
/app/jiazai/sql_loadv1.0/loaded/日期(例如:20201027)/load/log
可以去数据库中的日志表查询
load_log 记录表加载入备份表的状态
LOAD_PL_LOG记录表从备份表到目标表正确的状态
LOAD_PL_ERROR_LOG记录表从备份表到目标表错误的状态
例:
注意:
如果第一次初始话在凌晨3点前完成数据加载,则crontab -e
解除定时的注释,以后每天3:00-9:00会自动加载调用。
如果第一次初始化不能在凌晨3点前加载完成、或日后出现9点前未将32张接口表数据文件全部推送完成、或ODS修复数据重新推数,需运维手动调用进行加载完成后,再crontab -e
解除定时的注释,以后每天3:00-9:00会自动加载调用
如运维手动调用:
/app/jiazai/sql_loadv1.0
路径下执行sh loadyw.sh
要下载的数据文件夹名
脚本运行完成后,去数据库中确认以下26张表中数据是否全部被删除
确认无误后到
/app/jiazai/sql_loadv1.0/loaded/日期(就是所要加载的数据文件夹名例如:20201027)路径下执行
轮询定时调度:
定时每天调用/app/jiazai/sql_loadv1.0/hxloadupgrade.sh
自动将前一天的数据加载到行协test用户下的表中。
定时查看:crontab -l
ODS数据文件从数据交换平台下载到:
/app/jiazai/sql_loadv1.0/loaded/指定日期文件夹
例:/app/jiazai/sql_loadv1.0/loaded/20201027
路径下
装载后的数据文件存放在:(如果有失败的表,路径下会产生*.bad文件)
例:/app/jiazai/sql_loadv1.0/loaded/20201027/load/data
路径下
如当天的装载有失败的表,需查看日志确定原因。
查看每张表装载日志:
例:/app/jiazai/sql_loadv1.0/loaded/20201027/load/log/表名.log
数据库中的日志表:
表名 | 作用 |
load_z_log | 每天只生成1条记录,记录每天整体装载情况 |
load_log | 记录表加载入备份表的状态 |
LOAD_PL_LOG | 记录表从备份表到目标表正确的状态 |
LOAD_PL_ERROR_LOG | 记录表从备份表到目标表错误的状态 |