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;
原文地址:https://www.cnblogs.com/DFX339/p/10712204.html
时间: 2024-10-26 03:15:03