Hive建立表以及匯入資料

2021-08-21 05:16:28 字數 1725 閱讀 5500

## 建表

### 內錶

```create table test_user_base(

name string comment 'name value',

workid string comment 'workid value',

age string comment 'age value',

*** string comment '*** value',

phone string comment 'phone value',

addr string comment 'addr value',

flag string comment 'flag value',

)row format delimited fields terminated by ',';

```### 外表

create external table test_user_base(

name string comment 'name value',

workid string comment 'workid value',

age string comment 'age value',

*** string comment '*** value',

phone string comment 'phone value',

addr string comment 'addr value',

flag string comment 'flag value',

)row format delimited fields terminated by ',';

```> 內部表和外部表不一樣,內部表儲存的是真實的資料,外部表的資料儲存在檔案系統上,hive內部僅僅儲存資料元路徑;刪除的時候,內部表會刪除元資料和真實資料全部刪除,且不可恢復;內部表僅僅刪除元資料。

## 導數

### 匯入

1. 從本地匯入資料

```load data local inpath '/opt/custorm' into table customer;

```2. 從hdfs匯入資料(會將hdfs上的檔案mv到建表時指定的目錄下,而不是copy)

```load data inpath '/user/root/employees.txt' overwrite into table employees;

```> into是加上,而overwrite是覆蓋。

### 匯出

1. 匯出到本地

```insert overwrite local directory '/opt/customer_exp' 

row format delimited fields terminated by ','

select * from employees limit 5;

```2. 匯出到hdfs

```insert overwrite directory '/user/root/customer_exp' 

row format delimited fields terminated by ','

select * from employees limit 5;

```tips:

- 建表和載入分割槽時加上 if not exists 

- 刪除表時加上   drop table if exists

- 強制刪除資料庫:drop database if exists test cascate;

hive建立外部表,匯入資料

在hdfs建立分割槽,並存有檔案 手工建立或者由程式在hdfs上生成了分割槽目錄,每個分割槽目錄下有相應的檔案。vi test.txt 2 lily 1991 shanghai 3 jack 1992 guangxi 4 jenny 1999 xinjiang 5 jay 1995 xizang 6...

hive 表插入 匯入資料

1 覆蓋現有分割槽資料,如果沒有該指定分割槽,新建該分割槽,並且插入資料 insert overwrite table 庫名.表名 partition dt 2018 09 12 name tom select from 庫名.表名 where.2 向現有的分割槽插入資料 之前的資料不會被覆蓋 in...

Hive 建立表方式以及表的型別

1 常規方式 create table table name 字段 2 通過子查詢方式 類似於mysql中檢視的建立方式 create table table name as select 3 建立類似表 只有表結構,沒有資料 create table new table name like old...