功能描述

SHOW TABLES HISTORY 命令用于查看表的历史记录,包括已删除表的删除时间。对于未删除的表,删除时间将显示为 null。此功能特别适用于通过 UNDROP 恢复误删的表。

语法格式

SHOW TABLES HISTORY [IN schema_name] [LIKE 'pattern' ] [WHERE <expression>`]

参数说明

  • LIKE pattern: 可选参数,用于按照对象名称进行过滤。支持不区分大小写的模式匹配,可以使用 SQL 通配符 %_。注意,此参数不支持与 WHERE 条件同时使用。
  • IN schema_name: 可选参数,用于指定 schema 名称,从而列举指定 schema 下的表历史记录。
  • WHERE <expression>(可选,与LIKE二选一) ,``` 支持用户根据命令显示的字段进行筛选。用户可以通过表达式对结果使用表达式进行复杂过滤

使用示例

示例 1:查看表历史记录

SHOW TABLES HISTORY;
+-------------+------------------------------------------+-------------------------+-------------+----------+------------+---------+----------------+-------------------------+
| schema_name |                table_name                |       create_time       |   creator   |   rows   |   bytes    | comment | retention_time |       delete_time       |
+-------------+------------------------------------------+-------------------------+-------------+----------+------------+---------+----------------+-------------------------+
| public      | mv                                       | 2024-12-13 09:34:26.683 | UAT_TEST    | 4        | 2467       |         | 1              |                         |
| public      | mv_base_a                                | 2024-12-13 09:34:05.076 | UAT_TEST    | 4        | 1970       |         | 1              |                         |
| public      | mv_base_a                                | 2023-09-22 03:41:28.011 | UAT_TEST    | 5        | 1406       |         | 1              | 2024-12-13 09:34:04.946 |
+-------------+------------------------------------------+-------------------------+-------------+----------+------------+---------+----------------+-------------------------+

执行该命令将列出当前数据库中所有表的历史记录。

示例 2:按照 schema 查看表历史记录

SHOW TABLES HISTORY IN my_schema;

该命令将只显示 my_schema schema 下的表历史记录。

示例 3:过滤特定模式的表历史记录

SHOW TABLES HISTORY LIKE '%test%';

此命令将列出名称中包含 "test" 的表历史记录。

示例 4:恢复误删的表

-- 创建表并插入数据
CREATE TABLE mytable (id INT, name STRING);
INSERT INTO mytable VALUES (1, 'aaa');

-- 删除表
DROP TABLE mytable;

-- 查看表删除记录
SHOW TABLES HISTORY;

-- 恢复表
UNDROP TABLE mytable;

示例 5:删除表后创建同名的表并尝试恢复

-- 创建表并插入数据
CREATE TABLE mytable (id INT, name STRING);
INSERT INTO mytable VALUES (1, 'aaa');

-- 删除表
DROP TABLE mytable;

-- 查看表删除记录
SHOW TABLES HISTORY;

-- 重复建表
CREATE TABLE mytable (col1 INT, col12 STRING);

-- 查看表删除记录,未删除的表 delete_time 是 null
SHOW TABLES HISTORY;

-- 重命名未删除的表
ALTER TABLE mytable RENAME TO mytable_back;

-- 恢复表
UNDROP TABLE mytable;

联系我们
预约咨询
微信咨询
电话咨询