### 提取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的更多相关文章

  1. 4.5 .net core下直接执行SQL语句并生成DataTable

    .net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...

  2. .net core下直接执行SQL语句并生成DataTable

    .net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...

  3. PL/SQL 报错:动态执行表不可访问,本会话的自动统计被禁止。 在执行菜单里你可以禁止统计,或在v$session,v$sesstat 和vSstatname表里获得选择权限。

    现象: 第一次用PL/SQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如haishu登录并创建一个表则报错“动态执行表不可访问,本会话的自动统计被禁止.在执行菜单里 ...

  4. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  5. 谈一谈SQL Server中的执行计划缓存(下)

    简介 在上篇文章中我们谈到了查询优化器和执行计划缓存的关系,以及其二者之间的冲突.本篇文章中,我们会主要阐述执行计划缓存常见的问题以及一些解决办法. 将执行缓存考虑在内时的流程 上篇文章中提到了查询优 ...

  6. sql关键字的解释执行顺序

      sql关键字的解释执行顺序 分类: 笔试面试总结2013-03-17 14:49 1622人阅读 评论(1) 收藏 举报 SQL关键字顺序 表里面的字段名什么符号都不加,值的话一律加上单引号 有一 ...

  7. Apache Spark源码走读之11 -- sql的解析与执行

    欢迎转载,转载请注明出处,徽沪一郎. 概要 在即将发布的spark 1.0中有一个新增的功能,即对sql的支持,也就是说可以用sql来对数据进行查询,这对于DBA来说无疑是一大福音,因为以前的知识继续 ...

  8. 在打包程序中自动安装SQL Server数据库 .

    原文:在打包程序中自动安装SQL Server数据库 . 1.创建安装项目“Setup1”安装项目 在“文件”菜单上指向“添加项目”,然后选择“新建项目”. 在“添加新项目”对话框中,选择“项目类型” ...

  9. 为准确生成执行计划更新统计信息-analyze与dbms_stats

    如果我们想让CBO利用合理利用数据的统计信息,正确判断执行任何SQL查询时的最快途径,需要及时的使用analyze命令或者dbms_stats重新统计数据的统计信息. 例如索引跳跃式扫描(INDEX ...

随机推荐

  1. day36-hibernate检索和优化

    连接查询是多表查询.

  2. div+css学习笔记一(转)

    div+css学习笔记一 (2011-05-12 07:32:08) 标签: div css 居中 背景图片 ie6 ie7 margin 杂谈 分类: 网页制作 1.IE6中用了float之后导致m ...

  3. 把数据分配到view

  4. sqlplus相关命令

    1.sqlplus 执行后提示输入用户名及密码 2.sqlplus /nolog; 执行后非登录状态进入 3.conn name/password; 以指定用户名及密码登录 4.sqlplus nam ...

  5. Java泛型读书笔记 (三)

    泛型对于老代码的支持 Java的泛型设计成类型擦除的目的,很大一部分是为了兼容老老代码.如下的一段代码: void setLabelTable(Dictionary table) table的类型是非 ...

  6. MongoDB 分片1

    第一步: 准备数据节点 必须添加–shardsvr参数. mongod--port32770--shardsvr--dbpathD:\db\mongodata\shard\mongodb1--logp ...

  7. 基于ef core 2.0的数据库增删改审计系统

    1.首先是建审计存储表 CREATE TABLE [dbo].[Audit] ( [Id] [uniqueidentifier] NOT NULL, [EntityName] [nvarchar](1 ...

  8. c#静态方法和非静态方法区别

    c#静态方法和非静态方法区别 C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?让我们来看看最直观的差别:使用了static 修饰符的方法为 ...

  9. onmouseover和onmouseout在GridView中应用 Ver2

    第一个版本,可以参考:http://www.cnblogs.com/insus/archive/2009/03/13/1411057.html 以前的版本,是在Gridview的OnRowCreate ...

  10. cin、cout、cerr、clog------c++ Primer Plus

    cin对象与标准输入流相对应. cout对象与标准输出流相对应. cerr对象与标准错误流相对应,常用于程序错误信息,不缓冲,直接被发送给屏幕. clog对象也对应标准错误流(这点儿和cerr是一样的 ...