RESTORE TABLE(归档文件取回)
功能概述
RESTORE TABLE
RESTORE TABLE
的归档文件取回形式用于将 Table Volume 中
ARCHIVE
ARCHIVE
类型的分区文件异步恢复为可读取的标准存储文件。它只负责取回归档文件,不会将表回滚到历史版本;历史版本回滚请使用带
TO TIMESTAMP AS OF
TO TIMESTAMP AS OF
的
RESTORE TABLE
RESTORE TABLE
语法。
语法
RESTORE TABLE [<namespace>.]<table_name>
SUBDIRECTORY '<path>';
参数说明
| 参数 | 说明 |
|---|
<namespace>
<namespace> | 可选。表所属的 schema 名称。省略时使用当前 schema。 |
<table_name>
<table_name> | 包含归档文件的表名称。文件位于该表的 Table Volume 中。 |
SUBDIRECTORY '<path>'
SUBDIRECTORY '<path>' | 指定要取回的归档文件子目录,应与 ARCHIVE TABLE
ARCHIVE TABLE 使用的目录一致。 |
⚠️ 注意:只有
ARCHIVE
ARCHIVE
类型文件支持此命令;
IA
IA
类型文件可以直接读取,不能执行取回。
使用示例
示例 1:准备已归档的 ARCHIVE 文件
CREATE TABLE public.doc_archive_orders (
order_id BIGINT,
amount DECIMAL(18,2)
) PARTITIONED BY (dt STRING);
INSERT INTO public.doc_archive_orders PARTITION (dt = '2026-08-29')
VALUES (3, 90.12);
ARCHIVE TABLE public.doc_archive_orders
PARTITION (dt = '2026-08-29')
SUBDIRECTORY 'archive/20260829/'
STORAGE_CLASS = 'ARCHIVE';
归档命令成功返回后,Table Volume 中会生成
archive/20260829/
archive/20260829/
子目录。
示例 2:提交取回任务
RESTORE TABLE public.doc_archive_orders
SUBDIRECTORY 'archive/20260829/';
命令返回每个文件的提交结果。例如:
| file | status |
|---|
archive/20260829/part00001
archive/20260829/part00001 | {"message":"","success":true}
{"message":"","success":true} |
success=true
success=true
表示取回任务已提交,不表示文件已经完成取回。
示例 3:查询取回结果
SHOW RESTORE STATUS public.doc_archive_orders
SUBDIRECTORY 'archive/20260829/';
取回过程中,文件状态可能为:
| file | state |
|---|
archive/20260829/part00001
archive/20260829/part00001 | {"status":"RESTORING"}
{"status":"RESTORING"} |
任务完成后,状态变为:
| file | state |
|---|
archive/20260829/part00001
archive/20260829/part00001 | {"status":"RESTORED"}
{"status":"RESTORED"} |
只有状态为
RESTORED
RESTORED
时,才可以读取或导入该目录中的文件。
注意事项
- 取回操作是异步操作;命令成功返回只表示任务已提交。
- 必须使用 SHOW RESTORE STATUS 查询状态,确认文件为
RESTORED
RESTORED
后再读取。
- 只有
ARCHIVE
ARCHIVE
类型文件支持取回,IA
IA
类型文件不支持。
- 单次取回的分区文件数不能超过 10000 个。
- 取回操作会产生对象存储取回费用和临时标准存储费用。
- 执行用户需要对目标表具有
SELECT
SELECT
权限。
相关文档