测试人社区

有关网上示例数据库使用的一些疑问

示例数据库


大概看了下,知道这些文件是用来创建数据库、表并支持导入数据,但其中一个文件sql_test.sh看的不是很明白,可否写一个执行这个文件的执行示例语句
文件上半部分,大概看明白了,下面这部分没看懂,如果可以,希望老师上课讲一下。
for T in $($MYSQL -BN -e ‘show tables from employees’)
do
CRC_TEXT=$($MYSQL -BN -e “checksum table $T” employees)
COUNT=$($MYSQL -BN -e “select count(*) from $T” employees)
CRC=$(echo $CRC_TEXT | awk ‘{print $2}’)
expected_crc=$(get_expected $T crc)
expected_count=$(get_expected $T count)
if [ “$expected_count” == “$COUNT” ]
then
COUNT_RESULT=OK
else
COUNT_RESULT=DIFFERS
fi
if [ “$expected_crc” == “$CRC” ]
then
CRC_RESULT=OK
else
CRC_RESULT=DIFFERS
fi
printf “%-15s %'10d %'15d (%-7s %-7s)\n” $T $COUNT $CRC $COUNT_RESULT $CRC_RESULT
done

谢谢

提问的时候尽量注意下格式哈 代码用md格式会比较美观也方便阅读,置顶帖子有写具体格式可以参考下

执行

  • 其实你直接执行一下 他会给出提示语告诉你脚本怎么执行的
    image
  • 他给出了三种执行方式主要是看你的mysql是怎么启动的 好像常规的启动方式都是第二种
./test_sql.sh 'mysql -u 用户名 -p密码'   

语句解释

  • 主要的for循环就是获取了emoloyees库中每张表的表名 然后循环表名来执行里面的语句
  • 主要校验的有两个数据 一个是Checksum 这个是一个用于一致性检查的数据,经常被用于数据导入导出之后的校验,具体因为什么变动会导致改变就不详解了。另外一个是统计数据条数。下面的if语句就是对数据库中获取的数据和之前shell脚本中带着的数据进行对比了, 然后打印一个结果 就OK了

这个文件涉及shell脚本和数据库操作,需要补充的知识点较多,谢谢老师解答。