数据加载操作手册
文章目錄
- 一、基礎資料準備
- 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.sh2.2. 拉取ods推送的數據文件
#進入sql_loadv1.0下面 cd /app/jiazai/sql_loadv1.0/ #拉取ods推送指定日期的數據文件 #格式:sh load.sh 年月日 案例:sh load.sh 202010272.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. 數據加載腳本執行
cd /app/jiazai/sql_loadv1.0/loaded/20201027/ sh ./run_sqlldr.sh3.5. sql還原
將/app/jiazai/sql_loadv1.0/sql/truncateyw.sql還原
四、輪詢定時調度
定時每天調用/app/jiazai/sql_loadv1.0/hxloadupgrade.sh
自動將前一天的數據加載到行協test用戶下的表中。
4.1. 設置腳本執行頻次
編輯定時任務配置文件:
crontab –e4.2. 設置執行頻次
案例:每天上午10:15觸發:0 15 10 * * ? /app/jiazai/sql_loadv1.0/hxloadupgrade.sh4.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記錄表從備份表到目標表錯誤的狀態
例:
注意:
如果第一次初始話在凌晨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 | 記錄表從備份表到目標表錯誤的狀態 |
總結
- 上一篇: Springboot/Cloud集成Se
- 下一篇: 前后端敏感数据加密方案及实现_01