我想在我们的数据库中克隆一个名为'blah'的impala表以进行测试(这样我就不会意外地删除一些我不应该删除的内容)。然而,表'blah'有分区,我运行的命令似乎没有起到作用。有人能告诉我在新表中自动创建/模拟分区的技巧吗?或者我需要在新表中手动创建分区吗?
我使用的命令是:
CREATE TABLE blah_copy LIKE blah
INSERT INTO TABLE blah_copy SELECT * FROM blah
当我运行时,它看起来会为我创建表,因为它们的列数相同
desc blah
desc blah_copy
但是,当我尝试复制数据(上面的insert语句)时,它会告诉我
ERROR: AnalysisException: Not enough partition columns mentioned in query. Missing columns are: www, xxx, yyy, zzz.
查看cloudera文档,它说:
如果对原始表进行分区,则新表将继承相同的分区键列。因为新表最初是空的,所以它不会继承原始表中存在的实际分区。要在新表中创建分区,请插入数据或发出alter table。。。添加分区语句。
所以这就是我现在的处境。提前谢谢你能给我的任何帮助。
3条答案
按热度按时间cidc1ykv1#
你必须添加一个
PARTITION (column)
插入查询093gszye2#
设置hive.exec.dynamic.partition.mode=nonstrict
创建像blah一样的表格blah\u copy;
insert into table blah\u copy partition(wname,xname,yname,zname)从blah中选择*;
n7taea2i3#
如果你有最新的 Impala 版本,你可以做