我有一张有几十亿张唱片的table。我想看看这张table在过去一个月里有什么变化。我在1月1日和1月31日有一个表导出的csv文件。有什么好的方法可以查看文件在这段时间内的变化。例如:
pk old.name old.age new.name new.age diff (inferred)
1 david 18 david 18 UNCHANGED
2 charles 17 NULL NULL REMOVED
3 bob 19 bob 20 CHANGED
4001 NULL NULL bracey 14 ADDED
通常我只使用unix diff
但一台计算机/服务器无法处理此问题。一种想法是将两个表保存到bigquery并执行完全的外部联接,例如:https://stackoverflow.com/a/19594004/651174. 看看记录是怎么变的?
这更像是一个概念性的问题,我将如何用两个csv文件(每个文件都有数十亿条记录)来执行上述操作。我的目标是优化速度,因为这将是一个常见的操作。你有什么建议?
1条答案
按热度按时间mwngjboj1#
有一些工具可以比较数据库表,例如
pt-table-sync
. 看到了吗https://www.percona.com/doc/percona-toolkit/latest/pt-table-sync.html您可以使用pt table sync with options
--dry-run --print
,以打印差异大小,而不是对数据进行任何更改。此工具的优点是,它通过较小的数据块来比较数据,而不是试图一次性读取整个表。对于一个有数十亿行的表,这一点很重要。