CTAS建表语句(CREATE TABLE AS SELECT)
-
使用查询创建并填充表,select中选取的列名会作为新表的列名(所以通常是要取别名)
-
会改变表的属性、结构,比如只能是内部表、分区分桶也没了
- 目标表不允许使用分区分桶的,
FAILED: SemanticException [Error 10068]: CREATE-TABLE-AS-SELECT does not support partitioning in the target table
对于旧表中的分区字段,如果通过select * 的方式,新表会把它看作一个新的字段,这里要注意 - 目标表不允许使用外部表,如create external table … as select…报错
FAILED: SemanticException [Error 10070]: CREATE-TABLE-AS-SELECT cannot create external table
- CTAS创建的表存储格式会变成默认的格式TEXTFILE
- 对了,还有字段的注释comment也会丢掉,同时新表也无法加上注释
- 目标表不允许使用分区分桶的,
-
但可以在CTAS语句中指定表的存储格式,行和列的分隔符等
create table xxx as