Hive操作 複製表結構和資料

2021-09-24 21:51:45 字數 2066 閱讀 7853

這篇博文將分享給你如何將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;當你目前在那個資料庫的工作空間時,就可以省略該資料庫的名字。

注意:這時候不會複製原表的分隔符。舉個例子,我本來的庫裡面建立的表是以  '|'  來做分隔符的,但是我在將txt檔案的內容匯入(load data)新建的表裡時,再去select表會出現下圖的情況。並不是按列匯入,而是把檔案中的一行當做一列。

這樣的解決方法,我們在複製表的時候,需要指定分隔符:

create table iot_devicelocation like cserver.iot_devicelocation row format delimited fields terminated by '|';
複製表的結構和資料有兩種做法: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資料庫。

Hive操作 複製表結構和資料

create table if not exists database namea.table namea like database nameb.table nameb注意 這時候不會複製原表的分隔符。舉個例子,我本來的庫裡面建立的表是以 來做分隔符的,但是我在將txt檔案的內容匯入 load d...

oracle 複製表結構和資料

1 複製表結構以及資料 create table d table name as select from s table name 注意並不會建立索引 2 只複製表結構 create table d table name as select from s table name where 1 2 3...

sql複製表結構和資料

功能 將查詢的結果放到乙個新錶中去,查詢結果可以 於乙個表或多個表 sqlserver中使用select into語句 按照使用場合可以分為以下幾類 1 實現全表備份 如 select inott1fromtitles 2 備份表的一部分列 不寫 而寫出列的列表 或一部分行 加where條件 如 s...