通过mysqldump的tablename获取INSERT的行数 - awk,sed,grep

bash master需要...... 要比较来自多个日期的mysqldump,我需要sql GROUP BY,ORDER BY功能......但是在命令行上...... 使用grep / sed / awk我需要查找所有INSERT语句,然后导出每个tablename的行数。我真的很喜欢每个tablename的字节数... 典型的线条如下所示:
INSERT INTO `admin_rule` ...
匹配INSERT,然后匹配``中的表名,按唯一表名计数     
已邀请:
这个小awk片段怎么样:
BEGIN   { FS="`" }
/^INSERT/ { count[$2]+=1; bytes[$2]+=length($0) }
END { for(table in count) print table "," count[table] "," bytes[table]; }
编辑:测试用例:
$ cat test.sql
INSERT INTO `t1` VALUES('a', 12, 'b');
INSERT INTO `t2` VALUES('test', 'whatever', 3.14);
INSERT INTO `t3` VALUES(1, 2, 3, 4);
INSERT INTO `t2` VALUES('yay', 'works', NULL);
INSERT INTO `t2` VALUES(NULL, 'something' 2.71);
INSERT INTO `t3` VALUES(5, 6, 7, 8);
INSERT INTO `t5` VALUES('beta', 'gamma');
INSERT INTO `t6` VALUES('this', 'is', 'table', 'six');
$ awk -f t.awk <test.sql
t5,1,41
t6,1,54
t1,1,38
t2,3,144
t3,2,72
    

要回复问题请先登录注册