自动截取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 ... 
随机推荐
- c#日期与字符串间的转换(转)
			1.日期转字符串(转载) 在编程中经常要用到将日期变量转换为字符串的情况,而且不同的时候希望转换成不同格式的字符串 下面是一些常用的转换及转换结果: (查看格式说明) 以日期为例: 2009-09-0 ... 
- go语言linux环境配置
			linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ... 
- C++重载流插入和流输出运算符
			demo: /* Name: 重载输入输出流运算符使力代码 Copyright: qianshou Author: zhaozhe Date: 07/12/13 00:11 Description: ... 
- winform 对话框控件
			ColorDialog 可以调节颜色的控件,如果给一个按钮点击事件 ColorDialog.showdialog();就会弹出这个 返回值是个枚举类 然后定义一个这个类的变量 接收一下它的返回值 Di ... 
- Linux,du、df统计的硬盘使用情况不一致问题
			[转]http://blog.linezing.com/?p=2136 Linux,du.df统计的硬盘使用情况不一致问题 在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使 ... 
- Apache Thrift with Java Quickstart(thrift入门及Java实例)
			thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl ... 
- 《Spring实战》-2
			装配Bean 1.装配wiring,即创建应用对象之间的协作关系的行为,者也是依赖注入的本质. 2.创建Spring配置 从Sring3.0开始,Spring容器提供了两种配置Bean的方式: XML ... 
- C#中virtual和abstract区别,举例子
			virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ... 
- 最常用的15个前端表单验证JS正则表达式
			在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的JavaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份 ... 
- MySQL - ODBC安装错误问题!
			MySQL的ODBC安装时候可能会出错,主要原因是缺少VC支持库,需要2010版本的VC支持库!!X86和X64分别对应MySQL对应的ODBC,不能安装一个两个都搞定,如果需要安装两个ODBC驱动, ... 
