#!/bin/bash

DT=`date +%Y%m%d` #当前日期
YESTERDAY=`date -d "yesterday" +%Y-%m-%d` #昨天,用于处理数据的日期

if [ ! -n "$1" ] ;then
echo "ETL Date:$YESTERDAY";
else
YESTERDAY=${1}
echo "ETL Date:$YESTERDAY";
fi

#AGENT_IDS="'NDM1MW1RME9HTmlaRGN5TWpjNU5mZTU4','MTI1Y2FEVXlOVEZtWlRVNFpqUTVOZjJiYQ==','MTdiYmN5T0RNM056VXlOMkV5TlRJOWNjNw==','N2RkZVlXVTJNemxoWTJJd05UaGtmYWJm','MTY4OGFPVGMzTkdRNU1ESXpZMkU0OGQxYg==','OTE4OG1Zak5rTm1JNU5URmlOekYxN2Y3Mw==','YTExN09UaG1aREl6TjJabE1EQTNmYTlh','DdlYzRhNWM5MTBhN','NlYTk5NjBjMDRjYz','MzJiMzFkZGEwODA0','mU2YWY0N2E1NWYxZ','c3NWJlZDVlYTZmNT','DI0MjQ3MWNkODk0Y','gxYzRhOTcyNzhlYz','FhMjBiNjM2YzI3Yj','MDc0NTM1NjljMTVk','dkYjU3MDgwODI4Mz','OTc2ZTc4YzBhNWVj','E2OWY5ZThmMGY3NT','xYjg3NzY2MWU5OWV','IwOTgxMjFlZDY5OG','WE3ZWIzZWU1YTMwY','WFlZjU0Njk2NTAwZ','2MGE1MDNmNTBkZmY','4ZDM2OWQ1ZGEwOTY','DVlODAyYzA0ZTc0Z','GNlNjMwMjIyZDA1Z','1YTRiODZlZGY2NzB','U4M2ZjYzQ4YzJlMT','OWFlZGYzNGNmODI3','BmYzUyMDBiNTU3Yz','1ODY4MzVjNmJhNDM','MGI5NTcxNzUzNDQ3','DMxYTk3ZjYxNjk2Z','Q4ZTI4ZDAyMzA3M2','YzEwMDBlYWI1N2U0','DlmNTgyNGQzMzVjZ','2ZiOGQ1MGQ3ZmRjN'"

QUY_HOST=*****.com
QUY_DB=****
QUY_USER=****
QUY_PWD=*****

mysql -h$QUY_HOST $QUY_DB -u$QUY_USER -p$QUY_PWD << EOF
truncate TABLE ros_query_new_everyday;
insert into ros_query_new_everyday(id,query_date,device_id,agent_id,agent_code,agent_name) select id,query_date,device_id,agent_id,agent_code,agent_name from ros_query_new a where a.query_time between '$YESTERDAY 00:00:00' and '$YESTERDAY 23:59:59' and result_status = 0;
EOF

# 抽取文本query
mysql -h$QUY_HOST $QUY_DB -u$QUY_USER -p$QUY_PWD --default-character-set=utf8 --skip-column-names -B -e "select agent_id,agent_code,agent_name,device_id,query_date,count(*),'TEXT' query_type from ros_query_new_everyday where query_date ='$YESTERDAY' and agent_code in(select app_id from stat_agent_code) group by agent_code,device_id;" > etl_text_query_$YESTERDAY.txt
echo 'querys succeeded.'

ECP_HOST=****
ECP_USER=***
ECP_PWD=*****
ECP_DATABASE=*****

mysql -h$ECP_HOST $ECP_DATABASE -u$ECP_USER -p$ECP_PWD << EOF
DELETE FROM tp_storybox_querys WHERE query_date='$YESTERDAY';
LOAD DATA LOCAL INFILE 'etl_text_query_$YESTERDAY.txt' INTO TABLE tp_storybox_querys(agent_id,agent_code,agent_name,client_id,query_date,query_count,query_type);
DELETE FROM tp_storybox_querys WHERE query_date='$YESTERDAY' and client_id NOT IN(SELECT device_id FROM tp_storybox_active_log);
EOF

echo 'ETL succeeded.'

shell编写mysql抽取数据脚本的更多相关文章

  1. mysql批量数据脚本

    mysql批量数据脚本 1 建表 create table dept( id int unsigned primary key auto_increment, deptno mediumint uns ...

  2. shell编写mysql备份工具

    如需转载,请经本人同意. 这是之前写的一个备份脚本,调用的备份工具是xtrabackup 编写思路是:每周一全备份,备份后提取lSN号,对备份文件进行压缩,其余时候在LSN的基础上进行增量备份,并对3 ...

  3. python编写Mysql自动备份脚本

    1、先写一个python脚本 vim /opt/mysql_dump.py #!/usr/bin/env python# -*- coding:utf-8 -*-import osimport tim ...

  4. 使用sqoop从Oracle或mysql抽取数据到HDFS遇到的报错及解决

    一.参考文档: 1.https://www.rittmanmead.com/blog/2014/03/using-sqoop-for-loading-oracle-data-into-hadoop-o ...

  5. SHELL编写NGINX服务控制脚本

    使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...

  6. 利用Shell开发MySQL的启动脚本

    MySQL实例部署情况 01:MySQL程序安装目录:/data/apps/mysql 02:MySQL实例3306的配置文件为:/data/mysql/3306/my.cnf 03:MySQL实例3 ...

  7. shell导出mysql部分数据

    #!/bin/shSYSTEM=`uname -s` echo "echo"$SYSTEM if [[ $SYSTEM = "Linux" ]]; then   ...

  8. MySQL造数据脚本-亲试

    DELIMITER $$CREATE DEFINER=`root`@`192.168.2.254` PROCEDURE `pjzzspdz_fpmx_initdata12101245`()BEGIN ...

  9. MySQL批量数据脚本示例

    一.建表 # 新建库 create database bigData; use bigData; #1 建表dept CREATE TABLE dept( id INT UNSIGNED PRIMAR ...

随机推荐

  1. 初识Redux-Saga

    Redus-saga是一个redux的中间件,主要用来简便而优雅的处理redux应用里的副作用(side effect相对于pure function这类概念而言的).它之所以可以做到这一点主要是使用 ...

  2. css 单行文本居中显示,多行文本左对齐

    父级元素 text-align:center; 自级元素 text-align:left; display:inline-block;

  3. OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法

    一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...

  4. OC面向对象的三大特性

    一.面向对象的三大特性:封装(成员变量).继承和多态 1. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员 ...

  5. 带参数的Mixin

    带参数的mixin 在Less中,还可以像函数一样定义一个带参数的mixin, 这种形式叫做 Parametric Mixin,即带参数的混入.如: // 定义一个样式选择器 .borderRadiu ...

  6. JAVA的向上转型和向下转型怎么理解呢?

    在定义中是子类向父类转型称为向上转型,父类向子类转型是向下转型(必须先向上转型过,才能向下转型), 但是在下面类定义后,我得到的结果却不同.求大佬解惑 class superclass{ public ...

  7. 两天快速开发一个自己的微信小程序

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p2 { margin: 0.0px 0. ...

  8. 这一次带你彻底了解Cookie

    前言 网络早期最大的问题之一是如何管理状态.简而言之,服务器无法知道两个请求是否来自同一个浏览器.当时最简单的方法是在请求时,在页面中插入一些参数,并在下一个请求中传回参数.这需要使用包含参数的隐藏的 ...

  9. HDU 1317XYZZY spfa+判断正环+链式前向星(感觉不对,但能A)

    XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  10. HDU2191--多重背包(二进制分解+01背包)

    悼念512汶川大地震遇难同胞--珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...