2016-05-18 52 views
1

我想在我們的數據庫中克隆名爲'blah'的黑斑羚表作爲測試目的(所以我不會意外刪除我不應該的東西)。然而,表'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語句。

這就是我現在所處的位置。預先感謝您提供的任何幫助。

回答

1
  1. 組hive.exec.dynamic.partition.mode =非嚴格
  2. CREATE TABLE blah_copy LIKE等等;
  3. INSERT INTO TABLE blah_copy分區(wName,xName,yName,zName)SELECT * FROM blah;
1

如果您有最新版本的黑斑羚,你可以做

create table blah_copy partitioned by (column_x, column_y, column_z) as select * from blah;