Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)
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脚本读取数据库中的数据(二十三)的更多相关文章
- android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题
android 在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: @Overrid ...
- python - django 执行数据库迁移后数据库并未更新 和 InternalError: (1054, u"Unknown column 'xxx' in 'field list'")问题
一.发生情况:当你修改数据库结构后进行 python manage.py makemigrations 和 python manage.py migrate 后发现控制台会给你返回一个下面的结果,但是 ...
- shell awk读取文件中的指定行的指定字段
1.awk功能和实用形式 awk指定读取文件中的某一行的某个字段 awk 可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下 awk 'NR==m,NR==n {pr ...
- linux下监视进程 崩溃挂掉后自动重启的shell脚本
如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题.在Linux系统中,强大的shell就可以很灵活的处理这样的事务. 下面的shell通过一个while-d ...
- 数据库MySQL、redis主从切换shell脚本
具体源码可找我领取
- [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
saiku数据库的表和用户默认创建是在启动项目的时候,通过初始化 saiku-beans.xml 中的 h2database 这个 bean 执行org.saiku.service.Database类 ...
- Oracle数据库迁移至PostgreSQL数据库问题及解决
Oracle数据库迁移PostgreSQL数据库问题及解决 目录 如何计划迁移数据库(现状及问题分析) 统计系统表及表功能 解耦公共表 建立数据库 迁移表结构 导入表数据 改SQL语法 保证数据时效性 ...
- Shell脚本备份Mongodb数据库
目录 环境还原 环境创建 编写shell脚本 准备文件 创建shell脚本 执行shell脚本 进阶版 感谢 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Shell脚本备份Mongo ...
- Shell脚本使用汇总整理——达梦数据库备份脚本
Shell脚本使用汇总整理——达梦数据库备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html 脚本 ...
随机推荐
- C#线程同步(4)- 通知&EventWaitHandle一家
文章原始出处 http://xxinside.blogbus.com/logs/47523285.html 预备知识:C#线程同步(1)- 临界区&Lock,C#线程同步(2)- 临界区&am ...
- SQL Server監控与診斷
僅為記錄工作中遇到的問題. 1. 字符串截斷: SQL server里很多job用於運行DTS,經常會收到系統出錯警報,如: ...String ) The statement has been te ...
- Lintcode177-Convert Sorted Array to Binary Search Tree With Minimal Height-Easy
177. Convert Sorted Array to Binary Search Tree With Minimal Height Given a sorted (increasing order ...
- 【python】 迭代器、生成器、列表推导式
一.可迭代对象.迭代器 1.可以被for循环的数据类型(可迭代对象): 字符串(str).列表(list).字典(dict).元祖(tuple).range() 2.迭代器 2.1 将可迭代对象==& ...
- Vue-admin工作整理(五):守卫导航
一.作用: 它可以帮我们在路由发生跳转,到导航结束的时间内,做一些相应的逻辑处理,分为:全局守卫,和专项守卫 1.全局收尾: (a).前置守卫:router.beforeEach(to,from,ne ...
- Python的几个爬虫代码整理(网易云、微信、淘宝、今日头条)
整理了一下网易云歌曲评论抓取.分析好友信息抓取.淘宝宝贝抓取.今日头条美图抓取的一些代码 抓取网易云评论 进入歌曲界面: http://music.163.com/#/song?id=45318582 ...
- Git Learning3 Eclipse Tools(未完成)
1.创建Git 操作:工程 右键 Team Share Project Git 完成创建 2.全局设置:Window->Preference->Git->Configuration- ...
- HDU 6495 冰水挑战
Problem Description Polar Bear Pitching helps you crystallize your message. The stage could not be a ...
- NGS概念大科普(转)
NGS又称为下一代测序技术,高通量测序技术 以高输出量和高解析度为主要特色,能一次并行对几十万到几百万条DNA分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...
- 【改】利用ALSA库进行音频重采样
转自:http://www.voidcn.com/article/p-snamarwr-p.html 一.ALSA介绍: 1.简介: 高级Linux声音体系(英语:Advanced LinuxSoun ...