使用 shell脚本跑库mysql 如何实时打印sql?

当前写了一个数据库跑库的脚本 目前执行没有问题 库表都生成了

脚本如下

#!/bin/bash
#-u为数据库用户名 -p为密码如果数据库密码不是root记得修改这里
read -p "ip 地址,默认值 ==> (127.0.0.1) : " mysqlhost
read -p "请输入mysql服务端口,默认值 ==> (3306) : " mysqlport
read -p "请输入mysql超管密码,默认值 ==> (root) : " rootpwd
read -p "请输入oneaccess各个库拥有者对应的密码,默认值 ==> (Bamboocloud@1234) : " kupwd
read -p "请输入oneaccess对应的库及用户的后缀,默认为空串: " suffix
suffix=${suffix:-""}
rootpwd=${rootpwd:-"root"}
mysqlport=${mysqlport:-"3306"}
mysqlhost=${mysqlhost:-"127.0.0.1"}
kupwd=${kupwd:-"Bamboocloud@1234"}
basepath=$(cd `dirname $0`; pwd)
rm -rf ${basepath}/sql_execute
mkdir -p ${basepath}/sql_execute
\cp -r ${basepath}/mysql/** ${basepath}/sql_execute

sed -i "s/bam_password/kupwd/g"  ${basepath}/sql_execute/bam/bam_mysql_db_create.sql
sed -i "s/bam/bam${suffix}/g" ${basepath}/sql_execute/bam/bam_mysql_db_create.sql
sed -i "s/kupwd/${kupwd}/g" ${basepath}/sql_execute/bam/bam_mysql_db_create.sql

sed -i "s/bim_password/kupwd/g"  ${basepath}/sql_execute/bim/bim_mysql_db_create.sql
sed -i "s/bim/bim${suffix}/g" ${basepath}/sql_execute/bim/bim_mysql_db_create.sql
sed -i "s/kupwd/${kupwd}/g" ${basepath}/sql_execute/bim/bim_mysql_db_create.sql

sed -i "s/epass_password/kupwd/g"  ${basepath}/sql_execute/epass/epass_mysql_db_create.sql
sed -i "s/epass/epass${suffix}/g" ${basepath}/sql_execute/epass/epass_mysql_db_create.sql
sed -i "s/kupwd/${kupwd}/g" ${basepath}/sql_execute/epass/epass_mysql_db_create.sql

sed -i "s/apphub_password/kupwd/g"  ${basepath}/sql_execute/apphub/apphub_mysql_db_create.sql
sed -i "s/apphub/apphub${suffix}/g" ${basepath}/sql_execute/apphub/apphub_mysql_db_create.sql
sed -i "s/kupwd/${kupwd}/g" ${basepath}/sql_execute/apphub/apphub_mysql_db_create.sql

mysql -h$mysqlhost -uroot -p$rootpwd -P$mysqlport -e \
"use mysql;source ${basepath}/sql_execute/apphub/apphub_mysql_db_create.sql;
source ${basepath}/sql_execute/bam/bam_mysql_db_create.sql;  
source ${basepath}/sql_execute/bim/bim_mysql_db_create.sql; 
source ${basepath}/sql_execute/epass/epass_mysql_db_create.sql; 
use apphub${suffix}; 
source ${basepath}/sql_execute/apphub/apphub_mysql_table_and_data.sql; 
use bam${suffix}; 
source ${basepath}/sql_execute/bam/bam_mysql_table_and_data.sql; 
use bim${suffix}; 
source ${basepath}/sql_execute/bim/bim_mysql_table_and_data.sql; 
use epass${suffix}; 
source ${basepath}/sql_execute/epass/epass_mysql_table_and_data.sql;" -vvv > ${basepath}/running_sql.log & 

tail -f $basepath/running_sql.log --pid=$!

目前的问题就是 执行此脚本 会直接卡死 然后在后台执行 sql脚本 大概五分钟 才能执行完

然后就显示如下:
image.png

为了用户可以实时看到效果 我优化了一下 脚本

后台执行 sql 并 tail 监听 生成的实时文件 退出

美中不足就是 tail 文件有些卡顿

请问mysql 可支持 -e参数 实时打印输出过程吗?

阅读 1.8k
1 个回答

加个 -v 参数即可, mysql -v ; 但你这种情况是不是使用 标准输出好点? mysql < sql文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题