Saiku数据库迁移后的刷新脚本

之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下...

所以这里就需要做一个数据刷新,每次ETL之后都需要执行一遍数据刷新脚本。

刷新脚本主要分为两部分

1.使用shell命令从数据库中读取已有的用户信息 (因为已经做过数据迁移,数据库已经从h2转为我们自己的mysql)

saikuRefresh.sh

#!/bin/bash

#数据库连接信息
HOSTNAME="10.11.22.33" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="root"
DBNAME="saiku" #数据库名称
TABLENAME="users" #数据库中表的名称 #查詢數據
select_sql="select username from ${TABLENAME}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"

 使用命令 sh  saikuRefresh.sh 执行脚本,即会看到已有的用户信息

2. 循环取出用户信息,然后分别对每个用户执行刷新缓存命令 (以下便是完整的 saikuRefresh.sh 脚本信息)

>>> 接收shell脚本查询数据库的查询结果:  query_result=`mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"`    #注意这个` `符号不要丢哦

>>> shell判断文件是否存在:

 if [ -f  '/app/Saiku/saiku_rfresh.txt' ] ; then

  echo 'exists!!!.'
fi

>>> shell判断字符串是否相等:

if [ "hello" != "hello" ] ; then
  echo 'equals!!!'
fi

>>>shell循环取出数据:

for currusername in $query_result;
do
  echo $currusername
done;

#!/bin/bash

#数据库连接信息
HOSTNAME="10.22.33.44" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="root"
DBNAME="report" #数据库名称
TABLENAME="users" #数据库中表的名称 #cookies存储文件相关信息
dir=`pwd` #得到当前目录
filename=/saikuUserCookie.txt
filePath=${dir}${filename} #查詢數據
select_sql="select username from ${TABLENAME}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}" #使用变量query_result接收查询结果 所有用户名
query_result=`mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${select_sql}"` #根据用户名进行统一刷新当前用户
for currusername in $query_result;
do
if [ -f $filePath ] ; then
rm -rf $filePath
echo 'The saikuUserCookie.txt exists,old saikuUserCookie.txt is removed.'
fi if [ $currusername != "username" ] ; then
echo 'Begin to get new Cookie into saikuUserCookie.txt.'
curl -c ./saikuUserCookie.txt -d "language=zh&password=password124&username=$currusername" http://10.22.33.44:8080/saiku/rest/saiku/session
curl -b ./saikuUserCookie.txt "http://10.22.33.44:8080/saiku/rest/saiku/$currusername/discover/refresh" 1>saiku_refresh_data.txt
echo $currusername ' refresh OK............' 1>>saiku_refresh_data.txt
echo '---------------------' $currusername 'refresh finished! ---------------------'
fi
done;

  

Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)的更多相关文章

  1. android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题

    android  在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: @Overrid ...

  2. python - django 执行数据库迁移后数据库并未更新 和 InternalError: (1054, u"Unknown column 'xxx' in 'field list'")问题

    一.发生情况:当你修改数据库结构后进行 python manage.py makemigrations 和 python manage.py migrate 后发现控制台会给你返回一个下面的结果,但是 ...

  3. shell awk读取文件中的指定行的指定字段

    1.awk功能和实用形式 awk指定读取文件中的某一行的某个字段 awk      可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下 awk    'NR==m,NR==n {pr ...

  4. linux下监视进程 崩溃挂掉后自动重启的shell脚本

    如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题.在Linux系统中,强大的shell就可以很灵活的处理这样的事务. 下面的shell通过一个while-d ...

  5. 数据库MySQL、redis主从切换shell脚本

    具体源码可找我领取

  6. [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库

    saiku数据库的表和用户默认创建是在启动项目的时候,通过初始化 saiku-beans.xml 中的 h2database 这个 bean 执行org.saiku.service.Database类 ...

  7. Oracle数据库迁移至PostgreSQL数据库问题及解决

    Oracle数据库迁移PostgreSQL数据库问题及解决 目录 如何计划迁移数据库(现状及问题分析) 统计系统表及表功能 解耦公共表 建立数据库 迁移表结构 导入表数据 改SQL语法 保证数据时效性 ...

  8. Shell脚本备份Mongodb数据库

    目录 环境还原 环境创建 编写shell脚本 准备文件 创建shell脚本 执行shell脚本 进阶版 感谢 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Shell脚本备份Mongo ...

  9. Shell脚本使用汇总整理——达梦数据库备份脚本

    Shell脚本使用汇总整理——达梦数据库备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html 脚本 ...

随机推荐

  1. 拒绝QQ空间-手把手教你美化博客

    为什么要美化? 博客园的主题看起来是有一些年代感了,应该是不符合当代大学生的审美了,起码我就觉得不行,所以我们要进行一些美化,但是搞技术的人的博客不应该搞得花里胡哨,最好是简洁一些(个人想法),网上有 ...

  2. .NET EF框架的安装、及三种开发模式

    一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...

  3. [ZOJ 4024] Peak

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4024 从前往后找满足al<al+1的最大下标l,从后往前找 ...

  4. 动态 DP 学习笔记

    不得不承认,去年提高组 D2T3 对动态 DP 起到了良好的普及效果. 动态 DP 主要用于解决一类问题.这类问题一般原本都是较为简单的树上 DP 问题,但是被套上了丧心病狂的修改点权的操作.举个例子 ...

  5. 用《捕鱼达人》去理解C#中的多线程

    线程是进程中某个单一顺序的控制流,是程序运行中的调度单位,是程序执行流的最小单位,一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成. 线程自己不拥有系统资源,只拥有一点儿在运行中必 ...

  6. windows主用python3 个别程序使用python2的方法

    原始需求: 平时执行命令都默认用python3,遇到个别程序需要python2的时候也能用python2. 实现: 1.先装python3,添加环境变量,这时在cmd里输入python可以显示出是版本 ...

  7. Js拾忆

    instanceof运算符:他是判断一个构造函数的prototype是否在对象的原型链上查找到 var a = new Array(); console.log(a instanceof Array) ...

  8. springboot 使用Filter

    1. 创建 Filter 类,实现 Filter 接口 import javax.servlet.*; import javax.servlet.annotation.WebFilter; impor ...

  9. 毕业设计《项目管理》总结06之ajax的初步使用经验

    1.ajax页面时不能实现下载功能,因为后台下载功能返回的是一个流,而ajax得到后台的数据只能是字符串或字符,所以实现的方法可以: 例如:用js生成一个form,用这个form提交参数,并返回“流” ...

  10. 新手vue构建单页面应用实例

    本人写的小程序,功能还在完善中,欢迎扫一扫提出宝贵意见! 步骤: 1.使用vue-cli创建项目2.使用vue-router实现单页路由3.用vuex管理我们的数据流4.使用vue-resource请 ...