CLONE TABLE可以复制表数据到另一个表中,极大的提高了数据迁移的效率。本文为您介绍CLONE TABLE的使用。
使用限制
- 要求目标表与源表的Schema兼容。
- 支持分区表和非分区表。
- 目标表已存在时一次性复制分区的数量上限为10000个。
- 目标表不存在时无分区数量限制,满足原子性。
- 对同一个非分区表或者分区表的同一个分区,执行ClONE操作的次数不能超过7次。
命令格式
CLONE TABLE <[src_project_name.]src_table_name> [PARTITION(spec), ...]
TO <[dest_project_name.]desc_table_name> [IF EXISTS (OVERWRITE | IGNORE)] ;
命令说明
将源表src_table_name中的数据复制到目标表desc_table_name中。
说明 将数据复制到目标表之后,建议您执行数据验证(例如,执行select count
命令查看表的行数、执行desc
命令查看表大小等方法)以确保复制后数据的准确性。
参数说明
- src_table_name:源表名称。
- src_project_name:源表所在项目空间名称。不指定时,默认为当前项目空间。
- desc_table_name:目标表名称。
- 当目标表不存在时,CLONE TABLE会创建目标表(目标表的创建使用的是CREATE TABLE LIKE语义)。
- 当目标表已存在并指定IF EXISTS OVERWRITE,则覆盖目标表对应分区的数据。
- 当目标表已存在并指定IF EXISTS IGNORE,则跳过已存在分区,不覆盖目标表已有分区的数据。
- dest_project_name:目标表所在项目空间名称。不指定时,默认为当前项目空间。
示例
假设源表为分区表srcpart_copy和非分区表src_copy,表的元数据信息如下。
odps@ multi>read srcpart_copy;
+------------+------------+------------+------------+
| key | value | ds | hr |
+------------+------------+------------+------------+
| 1 | ok49 | 2008-04-09 | 11 |
| 1 | ok48 | 2008-04-08 | 12 |
+------------+------------+------------+------------+
odps@ multi>read src_copy;
+------------+------------+
| key | value |
+------------+------------+
| 1 | ok |
+------------+------------+
- 全量复制非分区表src_copy的数据至目标表src_clone。
odps@ multi>clone table src_copy to src_clone; ID = 2019102303024544g2540cdv2 OK --查看复制后目标表src_clone信息,验证数据准确性。 odps@ multi>select * from src_clone;
- 复制分区表srcpart_copy指定分区的数据至目标表srcpart_clone。
odps@ multi>clone table srcpart_copy partition(ds="2008-04-09", hr='11') to srcpart_clone IF EXISTS OVERWRITE; ID = 20191023030534986g4540cdv2 OK --查看复制后目标表srcpart_clone信息,验证数据准确性。 odps@ multi>select * from srcpart_clone;
- 全量复制分区表srcpart_copy的数据至目标表srcpart_clone并跳过目标表中已存在的分区。
odps@ multi>clone table srcpart_copy to srcpart_clone IF EXISTS IGNORE; ID = 20191023030619196g5540cdv2 OK --查看复制后目标表srcpart_clone信息,验证数据准确性。 odps@ multi>select * from srcpart_clone;
- 全量复制分区表srcpart_copy的数据至目标表srcpart_clone2。
odps@ multi>clone table srcpart_copy to srcpart_clone2; ID = 20191023030825186g6540cdv2 OK --查看复制后目标表srcpart_clone2信息,验证数据准确性。 odps@ multi>select * from s