数据加载操作手册

文章目录

          • 一、基础资料准备
            • 1.1.表名规约
            • 1.2.设计1套临时表和1套同构层表
            • 1.3.存储过程
          • 二、流程规范
            • 2.1. 生成控制文件(.ctl)
            • 2.2. 拉取ods推送的数据文件
            • 2.3. 数据加载+数据同步
          • 三、手动调度
            • 3.1. 到下载的数据文件路径:
            • 3.2. 数据文件筛选
            • 3.3. 将要加载的表的备份表清空;
            • 3.4. 数据加载脚本执行
            • 3.5. sql还原
          • 四、轮询定时调度
            • 4.1. 设置脚本执行频次
            • 4.2. 设置执行频次
            • 4.3. 定时任务查看
          • 五、日志轨迹

简述:
将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)
cd /app/jiazai/sql_loadv1.0/control/
rm -rf new.unl  old.unl file/
sh ./new.sh
2.2. 拉取ods推送的数据文件
#进入sql_loadv1.0下面
cd /app/jiazai/sql_loadv1.0/
#拉取ods推送指定日期的数据文件
#格式:sh load.sh 年月日
案例:sh load.sh 20201027
2.3. 数据加载+数据同步

将数据文件的数据加载到临时B表 把临时表到B表数据同步到目标A表
#进入拉取的某一天数据文件的目录

cd /app/jiazai/sql_loadv1.0/loaded/20201027/

#1.将数据文件中的数据加载到数据库中的临时B表中
#2.将数据库中的临时B表中的数据同步到目标A表中

sh run_sqlldr.sh

注: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路径下执行

sh truncateyw.sh
3.4. 数据加载脚本执行
cd /app/jiazai/sql_loadv1.0/loaded/20201027/
sh ./run_sqlldr.sh
3.5. sql还原

/app/jiazai/sql_loadv1.0/sql/truncateyw.sql还原

四、轮询定时调度

定时每天调用/app/jiazai/sql_loadv1.0/hxloadupgrade.sh
自动将前一天的数据加载到行协test用户下的表中。

4.1. 设置脚本执行频次

编辑定时任务配置文件:

crontab –e
4.2. 设置执行频次
案例:每天上午10:15触发:0 15 10 * * ?  /app/jiazai/sql_loadv1.0/hxloadupgrade.sh
4.3. 定时任务查看
crontab -l
五、日志轨迹

第一次初始化:
待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记录表从备份表到目标表错误的状态
例:

SELECT * FROM load_log where  to_Char(load_time,'yyyymmdd') =20200330 ; --实际加载日期
SELECT * FROM LOAD_PL_LOG where  to_Char(s_time,'yyyymmdd') =20200330 ;--实际加载日期  
SELECT * FROM LOAD_PL_ERROR_LOG where  to_Char(s_time,'yyyymmdd') =20200330 ;--实际加载日期  

注意:
如果第一次初始话在凌晨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)路径下执行

sh run_sqlldr.sh

轮询定时调度:
定时每天调用/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记录表从备份表到目标表错误的状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Tablestore管理海量快递轨迹数据架构实现

快递轨迹管理 对于一个快递公司,在全国范围内有着大量的快递点、快递员、运输车辆以及仓储中心。而快递自产生后,就会在这些地点、人物之间流转。因而,一套完善的快递管理追踪系统是快递公司的重要管理工具; 用户通过平台客户端…

完了!Python黄了! 80%的程序员:痛快!你怎么看?

Python真的万能语言?在我的一个朋友看来,他坚信 Python 可以做任何事情。其实我是不服的,因为我在某网站看到有条评论:Python将要黄了!事实究竟如何?这篇文章会揭开这个黑幕,让程序员看清现实&a…

趣谈预留实例券,一文搞懂云上省钱最新玩法

ECS近期推出了预留实例券(Reserved Instances),简称RI,这东西很cool,今天我们聊聊这个。 首先这篇Blog不是文档,读完后想详细了解文档的朋友请点击 一个小故事 我来给大家讲一个故事理解云上的几种付费方…

到底什么是空指针?如何避免空指针_01

文章目录1. 场景案例2. 针对于空指针的场景,有哪些方式可以避免问题1. 场景案例 package com.gblfy;import org.springframework.beans.factory.annotation.Autowired;import javax.servlet.http.HttpServletRequest;/*** 理解什么是空指针*/ public class WhatIsn…

在 IntelliJ IDEA 中部署应用到服务器(Eclipse)

在之前的文章《在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS》中讲解了如何将一个本地应用部署到阿里云 ECS 上去,有些读者反馈目前还有一些测试机器是在经典网络,甚至是在本地机房中,咨询是否可以通过 Cloud Toolkit 插件将应用部署到这…

linux所有文件打包压缩,Linux基础教程:对文件打包压缩

一、须知文件数量太多, 如果需要拷来拷去是不是很麻烦? 怎么办? 打包!文件太大,通过网络下载、传输会不会很费时间? 怎么办? 压缩!在Linux环境中,打包压缩文件的…

钉钉平台助力中国一汽疫情防控 数字化迈入新阶段

面对突如其来的疫情,中国一汽紧急应对、快速响应,携旗下一汽-大众、一汽丰田捐赠资金8100万元,并成立了疫情防控专项基金。同时,通过旗下“一汽出行”公司组织 “特别爱心车队”,在抗击疫情期间,提供安全、…

自动拆箱引发的空指针_02

文章目录1. 场景案例2. 规避自动拆箱引发的空指针的建议1. 场景案例 package com.gblfy;/*** 自动拆箱引起的空指针问题场景*/ public class Unboxingnpe {private static int add(int x, int y) {return x y;}private static boolean compare(long x, long y) {return x >…

阿里靠什么支撑 EB 级计算力?

阿里妹导读:MaxCompute 是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。去年MaxCompute 做了哪些工作,这些工作背后的原因是什么?大数据市场进入普惠红海的新阶段&a…

linux查看网卡的驱动命令行,Linux下查看网卡驱动和版本信息

Linux下查看网卡驱动和版本信息查看网卡生产厂商和信号查看基本信息:lspci查看详细信息:lspci -vvv # 3个小写的v查看网卡信息:lspci | grep Ethernet查看网卡驱动查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息&#xff…

为什么说流处理即未来?

本文整理自 Flink 创始公司 Ververica 联合创始人兼 CTO - Stephan Ewen 在 Flink Forward China 2018 上的演讲《Stream Processing takes on Everything》。 这个演讲主题看似比较激进:流处理解决所有问题。很多人对于 Flink 可能还停留在最初的认知,…

别再用那些已经淘汰的技术了!2020 年 9 大顶级 Java 框架出炉!!

来源 | Patricia Neil责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)顶级Java框架#1:Spring顶级Java框架#2:Hibernate顶级Java框架#3:Struts顶级Java框架#4:Play顶级Java框架#5:Googl…

字符串、数组、集合在使用时出现空指针怎么办?_03

文章目录1. 寻找代码案例中出错的场景2. 案例1. 寻找代码案例中出错的场景 字符串使用equals时报空指针错误 对象数组最燃new出来了,但是如果没有初始化,一样会报空指针错误 List对象add null不报错,但是addAll 不能添加null,否则…

云原生时代来袭 下一代云数据库技术将走向何方?

全面云化的时代已经到来,面对一系列的新技术和挑战,数据库市场将面临怎样的变革?作为云服务提供商,如何帮助更多的企业级用户把握“云”潮,提供最高效、最具价值的数据库解决方案? 日前,在阿里…

linux popd 命令,Linux中的pushd推入和popd弹出命令

pushd和popd是允许您使用目录堆栈并在Linux和其他类似Unix的操作系统中更改当前工作目录的命令。尽管pushd和popd是非常强大和有用的命令,但它们却被低估并且很少使用。在本教程中,我们将向您展示如何使用pushd和popd命令导航系统的目录树。目录堆栈目录…

开发跨平台app推荐React Native还是flutter?

嗯。。。这个问题十分不好回答啊(捋下鱼须)。闲鱼作为flutter领域的先驱者,以及fish_redux、flutter_boost等当红flutter库的作者,当然是欢迎广大的开发者多多使用flutter相关技术栈 逃~:)。咳咳,不过呢,我们还是正经得聊一下Reac…

直播连麦贾扬清,谈谈他所理解的四大 AI 落地问题 | 攻“疫”技术公开课

从机器学习模型的层次来看,大致经历了两次发展浪潮:浅层学习(Shallow Learning)和深度学习(Deep Learning)。1980年代,人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算…

解决linux下创建用户时出现Creating mailbox file: File exists

在linux下用useradd添加用户时,出现错误: Creating mailbox file: File exists? 为什么会出现这样的问题? 原来linux下添加用户后,会在系统里自动加一个邮箱(系统邮箱) 路径是:/var/spool/mail/用户名. 可以直接用命令#rm -rf /var/spool/mail/用户…

flutter在2019年会有怎样的表现?

Flutter的趋势 在移动端,受成本和效率的驱使,跨平台一站式开发慢慢成为一个趋势。从Hybird,RN,WEEX,Flutter,到各种小程序或快应用的大量涌现,虽然很多跨平台方案都有各自的优缺点,…

linux区分用户的权限级别可用,Linux用户及权限管理

基本操作首选我们梳理一下 Linux 下的用户、用户组、文件权限等基本知识,然后后面通过一个案例来实际演示一下权限设置的一些操作。首先 Linux 系统中,是有用户和用户组的概念的,用户就是身份的象征,我们必须以某一个用户身份来操…