如何使用 shell 脚本实时打印 SQL 执行过程并避免脚本卡死?

如何使用 shell 脚本实时打印 sql 执行过程并避免脚本卡死?

如何使用 shell 脚本跑库,并实时打印 sql 执行过程?

你在跑库脚本中通过以下命令后台执行 sql 脚本,会导致脚本卡死,直到 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 &

为了实时打印 sql 执行过程,可以在 mysql 命令后添加 -v 参数。然而,对于你这种情况,使用标准输出连接重定向会更合适:

mysql -v < ${basepath}/sql_execute/apphub/apphub_mysql_db_create.sql &
mysql -v < ${basepath}/sql_execute/bam/bam_mysql_db_create.sql &
mysql -v < ${basepath}/sql_execute/bim/bim_mysql_db_create.sql &
mysql -v < ${basepath}/sql_execute/epass/epass_mysql_db_create.sql &

这样,sql 执行过程的输出信息将直接输出到标准输出,你可以通过管道或重定向来处理这些输出信息,实现实时打印的功能。

以上就是如何使用 shell 脚本实时打印 SQL 执行过程并避免脚本卡死?的详细内容,更多请关注其它相关文章!