這篇博文將分享給你如何將hive中B庫的表複製到A庫中。如下圖,將cserver中的表的結構以及數據都複製到xpu中。本篇將分爲兩個部分:複製表結構、複製結構+數據。
一、複製表的結構
寫法:CREATE TABLE A.new_table LIKE B.old_table;(需要A數據庫提前創建好,否則會報找不到)
這裏將cserver的iot_devicelocation複製到xpu中去,首先看一下iot_devicelocation的表結構。
複製表結構:創建一個和iot_devicelocation表一樣表結構的test_iiot_devicelocation表
hive> create table if not exists xpu.test_iot_devicelocation like iot_devicelocation;
可以寫成如下的形式:create table if not exists database_nameA.table_nameA like database_nameB.table_nameB;當你目前在那個數據庫的工作空間時,就可以省略該數據庫的名字。
一、二、複製表的結構及數據
複製表的結構和數據有兩種做法:1、先複製表結構再添加數據;2、複製表的同時直接複製數據。
1、先複製表結構再添加數據
緊接着第一步,再將表結構複製過去之後,我們開始添加數據。
hive> insert into xpu.test_iot_devicelocation select * from iot_devicelocation;
寫法如下所示: insert into database_nameA.table_nameA select * from table_nameB;底層其實是依靠MapReduce去實驗數據複製的,有點類似於是sqoop複製數據的原理。
2、同時複製表和數據
hive> create table test_iot_deviceenergytype as select * from cserver.iot_deviceenergytype;
這裏我們將數據庫的工作空間切換到xpu數據庫。此後我們寫複製語句如下所示:create table table_nameA as select * from database_nameB.table_nameB; 執行結果如下圖所示:基本跟1中的方法一致,但是操作起來會更方便簡潔,因此推薦這種方法。
我們驗證一下結果,可以看出我們已將所有表都成功複製到xpu數據庫。