實驗環境使用的是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
中的eid
和ename
替換掉。
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 ...