實際工作中,誤刪表雖然是小概率時間,但同時也是不可避免又最不想發生的事了。那麼,萬一誤刪了如何處理呢。
1-表還在,資料被誤刪了
2-哎,都沒了
第一種情況
a-從hdfs的**站中將資料重新拷貝到**中
hdfs dfs -cp /user/user_name/.trash/user/hive/warehouse/db_name.db/table_name /user/hive/....
b-執行載入資料命令
load data inpath 'path...' into table table name [partition(***)]
如果重新拷貝資料載入後**咋zeppelin或其他平台不能用,可以嘗試先建乙個臨時表,資料load到臨時表中,然後select 臨時表 insert overwrite到原表中。
第二種情況
前幾天遇到的其實是第二種情況,當時是表結構和資料都沒有了,因為是dw層的表,可以跑一邊azkaban任務把資料重新生成,但表沒了需要先恢復表結構。
最開始是想根據生成資料的sql一點一點的拼湊建表語句,但其實有資料生成語句,直接create table tmp_table_name as 資料生成語句就能生成乙個結構相同的表,然後後邊就簡單了,可以show create table tmp_table_name來得到被刪除表的建表語句。