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

MjM*_*MjM 2 mysql sql

我想在数据库中找到丢失的表。

我有两个数据库:

  1. database_1(包含120个表
  2. database_1_backup(包含121个表

到目前为止我所做的:

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

show tables;
Run Code Online (Sandbox Code Playgroud)

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

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

Gor*_*off 6

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

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;
Run Code Online (Sandbox Code Playgroud)