mysql - 通过比较两个不同的数据库来查找丢失的表

标签 mysql sql

我想在数据库中查找缺失的表。

我有两个数据库:

  1. 数据库_1(包含120个表)
  2. database_1_backup(它包含121 个表)

到目前为止我做了什么:

我使用以下 sql 查询找到了两个数据库中的表列表:

show tables;

使用表格列表,我制作了两个文本文件,然后比较了两个文本文件。这就是我找到丢失的表的方式(这是一项耗时的任务,所以)。

是否有任何查询可用于通过比较两个表来查找丢失的表 数据库?

最佳答案

您可以使用聚合来查找任一数据库中丢失的表:

SELECT TABLE_NAME,
       (CASE WHEN SUM(TABLE_SCHEMA = 'dbname1') = 0
             THEN 'Missing in dbname1'
             ELSE 'Missing in dbname2'
        END) as which
FROM information_schema.TABLES
WHERE TABLE_SCHEMA IN ('dbname1', 'dbname2')
GROUP BY TABLE_NAME
HAVING COUNT(*) = 1
ORDER BY TABLE_NAME;

关于mysql - 通过比较两个不同的数据库来查找丢失的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57306475/

相关文章:

mysql - 再次谈一下 SQL 日期转换

sql - 全外连接后排序

sql - 在 SQL Server 中将一个表连接到两个一对多关系表

sql - 有效地检查文本列中是否存在文本

python - 如何从 SQLAlchemy 中的现有表中获取列名和类型?

c# - sql中如何计算余额?

mysql - 在 sequelize 中插入百万记录的最佳方法是什么

mysql - 表不可编辑mysql workbench错误

php - SQL更新如果已经存在,否则插入

mysql - 特定类别字段的数据库布局