如何统计MySQL多表行数?

Bash

1 前言

一个问题,一篇文章,一出故事。
今天迁移了一个数据库,用户提出需要验证数据是否完整,于是想到通过命令行来统计特定库的特定表的行数来确定。
如果你有更好的方法,请告诉我 O(∩_∩)O。

2 最佳实践

2.1 创建统计脚本

mkdir -p ~/scripts
vim ~/scripts/tableCount.sh

加入如下内容,

#!/bin/bash

dbUser="root"
dbPassword="rootPassword"
dbHost="mysql.cmdschool.org"
dbPort="3306"
dbName="db1"
dbTables="tab1 tab2 tab3"
dbLog="/var/log/tableClont.log"

for dbTable in $dbTables; do
        echo $dbName"."$dbTable":"`mysql -u$dbUser -p$dbPassword -h$dbHost -P$dbPort -e'select count(1) from '$dbName'.'$dbTable' \G;' 2> /dev/null | grep ^count | cut -d":" -f2` | tee -a $dbLog
done

由以上可知,核心语句如下,

mysql -u root -p rootPassword -h mysql.cmdschool.org -P 3306 -e 'select count(1) from db1.tab1 \G;'

使用说明,
参数“dbUser”定义需要统计的数据库服务器的登录用户
参数“dbPassword”定义需要统计的数据库服务器的登录密码
参数“dbHost”定义需要统计的数据库服务器的主机名称
参数“dbPort”定义需要统计的数据库服务器的端口
参数“dbName”定义需要统计的数据库名称
参数“dbTables”定义需要统计的数据库的表名称(一张以上)
参数“dbLog”定义统计日志输出的路径,以上范例定义值为“/var/log/tableClont.log”

2.2 执行统计脚本

sh ~/scripts/tableCount.sh

2.3 查看统计的记录

cat /var/log/tableClont.log

执行完毕后,可以通过以上命令查看统计记录,可见如下显示,

db1.tab1: 258726727
db1.tab2: 4878
db1.tab3: 31
没有评论

发表回复

Bash
如何使用expect自动输入密码?

1 前言 一个问题,一篇文章,一出故事。 笔者最近在一个脚本中使用“adcli passwd-use …

Bash
如何实现SFTP自动上传下载?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需要实现sftp自动上传下载,于是整理此文。 以下 …

Bash
如何实现Base Shell根据关键字获取数组?

1 前言 一个问题,一篇文章,一出故事。 笔者最近写一个Shell发现同一个脚本需要引用两个以上AD …