自动截取sql并合并,生成执行HQL
- ### 提取SQL语句
- FILE_PATH="/data/SCRIPT"
- cat tables | while read file
- do
- echo "-----> ${file}"
- start=`grep -nEi "^insert|^with" ${FILE_PATH}/${file}|awk -F':' '{print $1}'|head -`
- end=$((`grep -nEi "^exitCodeCheck" ${FILE_PATH}/${file}|awk -F':' '{print $1}'` - ))
- sed -n "${start},${end}p" ${FILE_PATH}/${file}|sed 's/;$//g'
- echo ";"
- done > sql_script
- ### 生成语法测试
- FILE_PATH="/data/SCRIPT"
- cat tables | while read file
- do
- echo "-----> ${file}"
- start=`grep -nEi "^insert|^with" ${FILE_PATH}/${file}|awk -F':' '{print $1}'|head -`
- end=$((`grep -nEi "^exitCodeCheck" ${FILE_PATH}/${file}|awk -F':' '{print $1}'` - ))
- sed -n "${start},${end}p" ${FILE_PATH}/${file}|sed 's/;$//g'
- echo "limit 0"
- echo ";"
- done > sql_script_limit
- # 替换文件中的dos回车
- sed -i 's#^M$#\n#g' sql_script
- ### 文件dos 转 unix
- find . -type f|xargs -i dos2unix {}
- FILE_PATH="/home/userNmae/hive_data_init/"
- script="sql_script"
- run_script="run_${script}"
- cat /dev/null > ${run_script}
- for i in {'2018-02-28','2018-04-30','2018-06-30','2018-08-31','2018-09-03'}
- do
- etl_dt_start=${i}
- etl_dt_end=`date -d "1 days ${etl_dt_start}" +%Y-%m-%d`
- echo ${etl_dt_start} ${etl_dt_end}
- etl_dt=`echo ${etl_dt_start}|sed 's/-/_/g'`
- # etl_dt=`echo ${etl_dt_start_str::}`;
- echo "use cmrh_dw;" > ${script}_${etl_dt}
- echo "set hive.execution.engine=spark;" >> ${script}_${etl_dt}
- echo "set hive.exec.dynamic.partition=true;" >> ${script}_${etl_dt}
- echo "set hive.exec.dynamic.partition.mode=nonstrict;" >> ${script}_${etl_dt}
- echo "---------> ${etl_dt_start} ${etl_dt_end} <---------" >> ${script}_${etl_dt}
- echo "set hivevar:IncStartAll=${etl_dt_start};" >> ${script}_${etl_dt}
- echo "set hivevar:IncEndAll=${etl_dt_end};" >> ${script}_${etl_dt}
- echo "source ${FILEPATH}/${script};" >> ${script}_${etl_dt}
- echo "hive -v -f ${script}_${etl_dt}" >> ${run_script}
- done
- ### 修改版脚本
- ### script name: prod_init.sh
- tables=$
- script=sql_str_${tables}
- run_script=run_${script}
- file_path=/data/etlscript/DB_NAME/SCRIPT/DWD/
- # 读取配置文件中的脚本名,提取相应脚本在生产环境中的SQL,合并成一个文件
- cat ${tables} | while read file
- do
- echo "-----> ${file}"
- start=`grep -nEi "^insert|^with" ${file_path}${file}|awk -F':' '{print $1}'|head -`
- end=$((`grep -nEi "^exitCodeCheck" ${file_path}${file}|awk -F':' '{print $1}'` - ))
- sed -n "${start},${end}p" ${file_path}${file}
- # |sed 's/;$//g'
- echo ";"
- done > ${script}
- cat /dev/null > ${run_script}
- #for day in {'2018-02-28','2018-04-30','2018-06-30','2018-08-31','2018-10-14'}
- # 读取日期配置文件中的日期,遍历生成批次执行脚本
- cat day_file|while read day
- do
- etl_dt_start=${day}
- etl_dt_end=`date -d "1 days ${etl_dt_start}" +%Y-%m-%d`
- # etl_dt_end=`date -d "1 months ${etl_dt_start}" +%Y-%m-%d`
- echo ${etl_dt_start} ${etl_dt_end}
- etl_dt_start_str=`echo ${etl_dt_start}|sed 's/-/_/g'`
- echo "set hive.exec.dynamic.partition=true;" > ${script}_${etl_dt_start_str}
- echo "set hive.exec.dynamic.partition.mode=nonstrict;" >> ${script}_${etl_dt_start_str}
- echo "set hive.execution.engine=spark;" >> ${script}_${etl_dt_start_str}
- echo "use cmrh_dw;" >> ${script}_${etl_dt_start_str}
- # etl_dt_start_str=`echo ${etl_dt_start}|sed 's/-/_/g'`
- # etl_dt_start_str=`echo ${etl_dt_start_str::}`;
- echo "---------> ${etl_dt_start} ${etl_dt_end} <---------" >> ${script}_${etl_dt_start_str}
- echo "set hivevar:IncStartAll=${etl_dt_start};" >> ${script}_${etl_dt_start_str}
- echo "set hivevar:IncEndAll=${etl_dt_end};" >> ${script}_${etl_dt_start_str}
- echo "source ${script}" >> ${script}_${etl_dt_start_str}
- echo "hive -v -f ${script}_${etl_dt_start_str} > ${script}_${etl_dt_start_str}_log 2>&1 &" >> ${run_script}
- done
- EOF
自动截取sql并合并,生成执行HQL的更多相关文章
- 4.5 .net core下直接执行SQL语句并生成DataTable
.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...
- .net core下直接执行SQL语句并生成DataTable
.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...
- PL/SQL 报错:动态执行表不可访问,本会话的自动统计被禁止。 在执行菜单里你可以禁止统计,或在v$session,v$sesstat 和vSstatname表里获得选择权限。
现象: 第一次用PL/SQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如haishu登录并创建一个表则报错“动态执行表不可访问,本会话的自动统计被禁止.在执行菜单里 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 谈一谈SQL Server中的执行计划缓存(下)
简介 在上篇文章中我们谈到了查询优化器和执行计划缓存的关系,以及其二者之间的冲突.本篇文章中,我们会主要阐述执行计划缓存常见的问题以及一些解决办法. 将执行缓存考虑在内时的流程 上篇文章中提到了查询优 ...
- sql关键字的解释执行顺序
sql关键字的解释执行顺序 分类: 笔试面试总结2013-03-17 14:49 1622人阅读 评论(1) 收藏 举报 SQL关键字顺序 表里面的字段名什么符号都不加,值的话一律加上单引号 有一 ...
- Apache Spark源码走读之11 -- sql的解析与执行
欢迎转载,转载请注明出处,徽沪一郎. 概要 在即将发布的spark 1.0中有一个新增的功能,即对sql的支持,也就是说可以用sql来对数据进行查询,这对于DBA来说无疑是一大福音,因为以前的知识继续 ...
- 在打包程序中自动安装SQL Server数据库 .
原文:在打包程序中自动安装SQL Server数据库 . 1.创建安装项目“Setup1”安装项目 在“文件”菜单上指向“添加项目”,然后选择“新建项目”. 在“添加新项目”对话框中,选择“项目类型” ...
- 为准确生成执行计划更新统计信息-analyze与dbms_stats
如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX ...
随机推荐
- Visual Studio Command Prompt 工具配置方法
有时候,我们无法找到Visual Studio Command Prompt,需要手动配置 打开 Visual studio2015,选择 "工具"—>"外部工具 ...
- Python 网络爬虫 006 (编程) 解决下载(或叫:爬取)到的网页乱码问题
解决下载(或叫:爬取)到的网页乱码问题 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 20 ...
- Java-马士兵设计模式学习笔记-装饰者模式
Java装饰者模式简介 一.假设有一个Worker接口,它有一个doSomething方法,Plumber和Carpenter都实现了Worker接口,代码及关系如下: 1.Worker.java p ...
- Django框架 之 模板语言
Django框架 之 模板语言 浏览目录 标签 过滤器 一.标签 Tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例: 1 2 ...
- Django 链接数据库错误 Strick Mode 解决
报错信息: WARNINGS:?: (mysql.W002) MySQL Strict Mode is not set for database connection ‘default‘HINT: M ...
- 深、浅copy
深.浅copy多用于列表 浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址 l1 = [1,2,3,["a","b"]] l2 = l1. ...
- SDUT 1488 数据结构实验:连通分量个数
数据结构实验:连通分量个数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 在无向图中,如 ...
- labview中的移位寄存器、循环隧道,自动索引隧道的区别
对于循环结构(For 循环.while循环)而言,循环体内的数据域外部数据的传递是通过以下三种方式: 1.移位寄存器2.循环隧道3.自动索引隧道 第一.各自的区别.作用 循环隧道,就是把数据传入传出循 ...
- Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)
Linux内核源码分析-链表代码分析 分析人:余旭 分析时间:2005年11月17日星期四 11:40:10 AM 雨 温度:10-11度 编号:1-4 类别:准备工作 Email:yuxu97101 ...
- R-CNN
标题:<Rich feature hierarchies for accurate object detection and semantic segmentation> 时间:2014 ...