hive的表的基本操作

2022-08-16 10:57:10 字數 4673 閱讀 1613

實驗環境使用的是cloudera-quickstart-vm-5.0環境。

建立表修改表名

修改表中的列名

新增列刪除列

替換列上面所述的6種針對hive的操作都是使用alter table來完成的。

alter table的語法如下:

alter

table name rename to new_name

alter

table name add columns (col_spec[, col_spec ...])

alter

table name drop [column] column_name

alter

table name change column_name new_name new_type

alter

table name replace columns (col_spec[, col_spec ...])

首先建立目標資料庫和目標表

對於的hive sql語句如下:

create

database testdb;

-- 建立實驗需要的資料庫

-- 開始 建立表

create

table testdb.student(

id int comment 'student id',

name string comment 'student name',

gender string comment 'student gender'

);-- 結束 建立表

檢視建立後的表的資訊

檢視表的資訊,使用describe table來實現。對應的hive sql 語句如下:

-- 開始   檢視表

describe testdb.student;

-- 結束 檢視表

可以看到,該錶已經成功建立,如果想要檢視該錶的詳細資訊,使用formatted關鍵字。**如下:

-- 開始   檢視表

describe formatted testdb.student;

-- 結束 檢視表

修改表名

為了簡單起見,我們這裡將testdb.student修改為testdb.student2。對應的**如下:

use testdb;-- 這裡最好先切換資料庫為目標資料庫

alter

table student rename to student2;

-- tablea rename to tableb

describe testdb.student2; -- 用新錶名檢視表資訊

下表包含testdb.employees表的字段,它顯示的字段要被更改(粗體)。

欄位名從資料型別轉換

更改欄位名稱

轉換為資料型別

eidint

eidint

name

string

ename

string

salary

float

salary

double

designation

string

designation

string

1. 準備工作

為了上面的實驗,我們需要先建立testdb.employees表。對應的hive sql語句如下:

create

table testdb.employees(

eid int comment 'this is employees id',

name string comment 'this is employee name',

salary float comment 'this is the salary of employee',

desination string );

-- 檢視建立後的表

2. 修改表中的列資訊 從1中的表我們知道我們需要將employees.name修改成employees.ename,還是就是將employees.salary的型別由float換成double型別。實現本案例的hive sql語句如下:

use testdb; -- 切換到目標資料庫

-- 本條語句是將name 欄位更改為ename string

alter

table employees change name ename string;

-- 本條語句是將salary更改為salary double

相信大家可以看出,需要修改欄位的資訊我們使用change 命令。命令格式為:

alter table chane old_column new_column new_clumn_type

準備工作

我們仍然使用上例中的testdb.employees表來進行操作。這裡就不再重複貼出**。

這裡的替換和之前的修改有點類似,這裡的替換應該更強調的是位置。

我們這裡將employees中的eidename替換掉。

1. 動手之前先看一下當前的testdb.employees中有哪些欄位吧

完成替換

為了完成替換的任務,我們編寫如下的hive sql語句

use testdb;

alter

table employees replace columns(

eid int epmid int,

ename string empname string

); describe testdb.employees;

這裡要說一聲抱歉,如下兩張圖所示,我的語句並沒有執行成功。

解決方法

根據上面的語句和所示,我們可以看到replace columns是將原來的表中的字段刪除,然後使用新的字段來填充該錶。

Hive學習 表的基本操作

或者show create table log 1 alter table log change column ip myip 報錯 alter table log change column ip myip string 修改欄位名 alter table log change column my...

hive的基本操作

建立表 create table table name col name data type comment col comment create table hive wordcount context string 載入資料到hive表 load data local inpath filepa...

Hive的基本操作

建立庫 create database if not exists xxuu test 查詢庫 show databases show databases like xxuu 庫資訊 查詢庫的hdfs路徑 desc database xxuu test desc database extended ...