Hive操作——复制表结构和数据

这篇博文将分享给你如何将hive中B库的表复制到A库中。如下图,将cserver中的表的结构以及数据都复制到xpu中。本篇将分为两个部分:复制表结构、复制结构+数据。

Hive操作——复制表结构和数据_第1张图片Hive操作——复制表结构和数据_第2张图片

一、复制表的结构

写法:CREATE TABLE A.new_table LIKE B.old_table;(需要A数据库提前创建好,否则会报找不到)

这里将cserver的iot_devicelocation复制到xpu中去,首先看一下iot_devicelocation的表结构。

Hive操作——复制表结构和数据_第3张图片

复制表结构:创建一个和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;当你目前在那个数据库的工作空间时,就可以省略该数据库的名字。

Hive操作——复制表结构和数据_第4张图片

注意:这时候不会复制原表的分隔符。举个例子,我本来的库里面创建的表是以  '|'  来做分隔符的,但是我在将txt文件的内容导入(load data)新建的表里时,再去select表会出现下图的情况。并不是按列导入,而是把文件中的一行当做一列。

Hive操作——复制表结构和数据_第5张图片

这样的解决方法,我们在复制表的时候,需要指定分隔符:

 create table iot_devicelocation like cserver.iot_devicelocation row format delimited fields terminated by '|';

Hive操作——复制表结构和数据_第6张图片

二、复制表的结构及数据

复制表的结构和数据有两种做法: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复制数据的原理。

Hive操作——复制表结构和数据_第7张图片

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中的方法一致,但是操作起来会更方便简洁,因此推荐这种方法。

Hive操作——复制表结构和数据_第8张图片

我们验证一下结果,可以看出我们已将所有表都成功复制到xpu数据库。

Hive操作——复制表结构和数据_第9张图片

你可能感兴趣的:(大数据—Hive)