1. ### 提取SQL语句
  2. FILE_PATH="/data/SCRIPT"
  3. cat tables | while read file
  4. do
  5. echo "-----> ${file}"
  6. start=`grep -nEi "^insert|^with" ${FILE_PATH}/${file}|awk -F':' '{print $1}'|head -`
  7. end=$((`grep -nEi "^exitCodeCheck" ${FILE_PATH}/${file}|awk -F':' '{print $1}'` - ))
  8. sed -n "${start},${end}p" ${FILE_PATH}/${file}|sed 's/;$//g'
  9. echo ";"
  10. done > sql_script
  1. ### 生成语法测试
  2. FILE_PATH="/data/SCRIPT"
  3. cat tables | while read file
  4. do
  5. echo "-----> ${file}"
  6. start=`grep -nEi "^insert|^with" ${FILE_PATH}/${file}|awk -F':' '{print $1}'|head -`
  7. end=$((`grep -nEi "^exitCodeCheck" ${FILE_PATH}/${file}|awk -F':' '{print $1}'` - ))
  8. sed -n "${start},${end}p" ${FILE_PATH}/${file}|sed 's/;$//g'
  9. echo "limit 0"
  10. echo ";"
  11. done > sql_script_limit
  1. # 替换文件中的dos回车
  2. sed -i 's#^M$#\n#g' sql_script
  3. ### 文件dos 转 unix
  4. find . -type f|xargs -i dos2unix {}
  1. FILE_PATH="/home/userNmae/hive_data_init/"
  2. script="sql_script"
  3. run_script="run_${script}"
  4. cat /dev/null > ${run_script}
  5. for i in {'2018-02-28','2018-04-30','2018-06-30','2018-08-31','2018-09-03'}
  6. do
  7. etl_dt_start=${i}
  8. etl_dt_end=`date -d "1 days ${etl_dt_start}" +%Y-%m-%d`
  9. echo ${etl_dt_start} ${etl_dt_end}
  10. etl_dt=`echo ${etl_dt_start}|sed 's/-/_/g'`
  11. # etl_dt=`echo ${etl_dt_start_str::}`;
  12. echo "use cmrh_dw;" > ${script}_${etl_dt}
  13. echo "set hive.execution.engine=spark;" >> ${script}_${etl_dt}
  14. echo "set hive.exec.dynamic.partition=true;" >> ${script}_${etl_dt}
  15. echo "set hive.exec.dynamic.partition.mode=nonstrict;" >> ${script}_${etl_dt}
  16. echo "---------> ${etl_dt_start} ${etl_dt_end} <---------" >> ${script}_${etl_dt}
  17. echo "set hivevar:IncStartAll=${etl_dt_start};" >> ${script}_${etl_dt}
  18. echo "set hivevar:IncEndAll=${etl_dt_end};" >> ${script}_${etl_dt}
  19. echo "source ${FILEPATH}/${script};" >> ${script}_${etl_dt}
  20. echo "hive -v -f ${script}_${etl_dt}" >> ${run_script}
  21. done
  1. ### 修改版脚本
  2. ### script name: prod_init.sh
  3. tables=$
  4. script=sql_str_${tables}
  5. run_script=run_${script}
  6. file_path=/data/etlscript/DB_NAME/SCRIPT/DWD/
  7. # 读取配置文件中的脚本名,提取相应脚本在生产环境中的SQL,合并成一个文件
  8. cat ${tables} | while read file
  9. do
  10. echo "-----> ${file}"
  11. start=`grep -nEi "^insert|^with" ${file_path}${file}|awk -F':' '{print $1}'|head -`
  12. end=$((`grep -nEi "^exitCodeCheck" ${file_path}${file}|awk -F':' '{print $1}'` - ))
  13. sed -n "${start},${end}p" ${file_path}${file}
  14. # |sed 's/;$//g'
  15. echo ";"
  16. done > ${script}
  17.  
  18. cat /dev/null > ${run_script}
  19. #for day in {'2018-02-28','2018-04-30','2018-06-30','2018-08-31','2018-10-14'}
  20. # 读取日期配置文件中的日期,遍历生成批次执行脚本
  21. cat day_file|while read day
  22. do
  23. etl_dt_start=${day}
  24. etl_dt_end=`date -d "1 days ${etl_dt_start}" +%Y-%m-%d`
  25. # etl_dt_end=`date -d "1 months ${etl_dt_start}" +%Y-%m-%d`
  26. echo ${etl_dt_start} ${etl_dt_end}
  27. etl_dt_start_str=`echo ${etl_dt_start}|sed 's/-/_/g'`
  28. echo "set hive.exec.dynamic.partition=true;" > ${script}_${etl_dt_start_str}
  29. echo "set hive.exec.dynamic.partition.mode=nonstrict;" >> ${script}_${etl_dt_start_str}
  30. echo "set hive.execution.engine=spark;" >> ${script}_${etl_dt_start_str}
  31. echo "use cmrh_dw;" >> ${script}_${etl_dt_start_str}
  32. # etl_dt_start_str=`echo ${etl_dt_start}|sed 's/-/_/g'`
  33. # etl_dt_start_str=`echo ${etl_dt_start_str::}`;
  34. echo "---------> ${etl_dt_start} ${etl_dt_end} <---------" >> ${script}_${etl_dt_start_str}
  35. echo "set hivevar:IncStartAll=${etl_dt_start};" >> ${script}_${etl_dt_start_str}
  36. echo "set hivevar:IncEndAll=${etl_dt_end};" >> ${script}_${etl_dt_start_str}
  37. echo "source ${script}" >> ${script}_${etl_dt_start_str}
  38. echo "hive -v -f ${script}_${etl_dt_start_str} > ${script}_${etl_dt_start_str}_log 2>&1 &" >> ${run_script}
  39. done
  40. 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. Visual Studio Command Prompt 工具配置方法

    有时候,我们无法找到Visual Studio Command Prompt,需要手动配置 打开 Visual studio2015,选择  "工具"—>"外部工具 ...

  2. Python 网络爬虫 006 (编程) 解决下载(或叫:爬取)到的网页乱码问题

    解决下载(或叫:爬取)到的网页乱码问题 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 20 ...

  3. Java-马士兵设计模式学习笔记-装饰者模式

    Java装饰者模式简介 一.假设有一个Worker接口,它有一个doSomething方法,Plumber和Carpenter都实现了Worker接口,代码及关系如下: 1.Worker.java p ...

  4. Django框架 之 模板语言

    Django框架 之 模板语言 浏览目录 标签 过滤器 一.标签 Tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例: 1 2 ...

  5. Django 链接数据库错误 Strick Mode 解决

    报错信息: WARNINGS:?: (mysql.W002) MySQL Strict Mode is not set for database connection ‘default‘HINT: M ...

  6. 深、浅copy

    深.浅copy多用于列表 浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址 l1 = [1,2,3,["a","b"]] l2 = l1. ...

  7. SDUT 1488 数据结构实验:连通分量个数

    数据结构实验:连通分量个数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description  在无向图中,如 ...

  8. labview中的移位寄存器、循环隧道,自动索引隧道的区别

    对于循环结构(For 循环.while循环)而言,循环体内的数据域外部数据的传递是通过以下三种方式: 1.移位寄存器2.循环隧道3.自动索引隧道 第一.各自的区别.作用 循环隧道,就是把数据传入传出循 ...

  9. Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)

    Linux内核源码分析-链表代码分析 分析人:余旭 分析时间:2005年11月17日星期四 11:40:10 AM 雨 温度:10-11度 编号:1-4 类别:准备工作 Email:yuxu97101 ...

  10. R-CNN

    标题:<Rich feature hierarchies for accurate object detection and semantic segmentation> 时间:2014 ...