我想在我们的数据库中克隆一个名为'blah'的impala表用于测试目的(所以我不小心删除了我不应该删除的东西)。但是,表'blah'有分区,它似乎不像我正在运行的命令正在做的伎俩。有人可以告诉我在新表中自动创建/模仿分区的任何技巧,还是我需要在新表中手动创建分区?
我正在使用的cmd是:
CREATE TABLE blah_copy LIKE blah
INSERT INTO TABLE blah_copy SELECT * FROM blah
它在我运行时为我创建表,因为它们具有相同的列数
desc blah
desc blah_copy
但是,当我尝试复制数据(上面的插入语句)时,它告诉我
ERROR: AnalysisException: Not enough partition columns mentioned in query. Missing columns are: www, xxx, yyy, zzz.
看着cloudera documentation,它说:
如果原始表已分区,则新表将继承相同的分区键列。因为新表最初是空的,所以它不会继承原始表中存在的实际分区。要在新表中创建分区,请插入数据或发出ALTER TABLE ... ADD PARTITION语句。
这就是我现在所处的位置。在此先感谢您提供给我的任何帮助。
如果你有最新的impala版本,你可以做
create table blah_copy partitioned by (column_x, column_y, column_z) as select * from blah;
您必须在插入查询中添加PARTITION (column)
INSERT INTO TABLE blah_copy PARTITION (column)
SELECT * FROM blah