CREATE AGGREGATE FUNCTION IF NOT EXISTS my_checksum(x TEXT) RETURNS CHAR(40)
DETERMINISTIC
BEGIN
DECLARE cksum CHAR(40) DEFAULT SHA1('');
DECLARE CONTINUE HANDLER FOR NOT FOUND
RETURN cksum;
LOOP
FETCH GROUP NEXT ROW;
SET cksum = SHA1(CONCAT(cksum, x));
END LOOP;
END
3条答案
按热度按时间i7uaboj41#
可以使用stored aggregate functions(应该是SQL标准)来实现单个列的快速方法。
下面是使用MariaDB的方法:
然后,您可以从数据行计算总和校验码,如下所示:
当然,这依赖于所有数据库中相同的列SHA1。转换为字符串应该使其最兼容,但在不同的数据库中实现这些转换的方式可能会有差异。
9w11ddsr2#
percona工具包有您需要的工具。
https://docs.percona.com/percona-toolkit/
请参阅
pt-table-checksum
和pt-table-sync
ccrfmcuu3#
我找到了。
它非常简单,而且非常快。
会给你一个数值来比较。
它是Transact-SQL,因此有望在MS Access、MySQL和MariaDB上运行相同的功能