自动截取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 ...
随机推荐
- 【oracle】首次启动SQL Developer配置java.exe出错(Could not find jvm.cfg! )
1.环境 win7/8/8.1 x64,Oracle 11g r2,jdk7 x64 2.问题 第一次启动Oracle SQL Developer的时候会让我们填写Java.exe的路径,我在jdk ...
- 【总结整理】webGIS学习
安装ArcGIS Server + ArcSDE + PostgreSQL + ArcMap安装(windows7)博客:https://blog.csdn.net/buqutianya/articl ...
- 在html中打开PDF
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="990" heig ...
- 关于c#里的集合的,结构体,枚举的定义,解释与应用
那么先写一下 集合 . 集合和数组很相似,数组里的类型是必须同一类型,固定长度.然而集合里的可以是不同类型,不固定长度的.所以集合运用的灵活度要更高一些. 要使用集合,必须先引用命名空间:using ...
- 利用General框架开发RDLC报表
RDLC是微软推出的自家的报表软件,虽然没有一些第三方的报表软件强大好用,但是作为VisualStudio集成的报表工具,在客户要求不高的情况下还是非常值得一用的,本文将介绍通过General代码生成 ...
- Blocks UVA - 10559
传送门 题目大意 有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多. 分析 首先不难看出这是一个区间dp,于是我们考虑如 ...
- Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门
距离上次发布文章已经过去了很久.在过去的半年中,虽然写的代码不多,但是在接触了计算机一些其他的知识,包括数据库.网络之后,感觉能够融会贯通,写代码水平又有了一定的提高.接下来,将会发表几篇文章,简单介 ...
- [译]在Javascript中制造二维数列
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- android报错:org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject
今天在写一个webservice时一直报错,报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast ...
- c语言判断是否是utf8字符串,计算字符个数
#include <stdio.h> #include <string.h> #include <stdlib.h> /********************** ...