求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
 
 
     
   
    全部     工程实例     标准规范     名校讲义     知识库    
 
 

Hive教程
Hive安装
Hive数据类型
Hive创建数据库
Hive删除数据库
Hive创建表
Hive修改表
Hive删除表
Hive分区
Hive内置运算符
Hive内置函数
Hive视图和索引
HiveQL Select Where
HiveQL Select Order By
HiveQL Select Group By
HiveQL Select Join
 
 

Hive修改表

    您可以捐助,支持我们的公益事业。

金额: 1元 10元 50元

姓名:

邮件:

电话:

公司:

说明:

认证码: 验证码,看不清楚?请点击刷新验证码 必填



 
 捐助

本章将介绍如何修改表的属性,如,修改表名,修改列名,添加列,并删除或替换列。

Alter Table 语句

它是在Hive中用来修改的表。

语法

声明接受任意属性,我们希望在一个表中修改以下语法。

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 ...])

Rename To… 语句

下面是查询重命名表,把 employee 修改为 emp。

hive> ALTER TABLE employee RENAME TO emp;

JDBC 程序

在JDBC程序重命名表如下。

import java.sql.SQLException;  
import java.sql.Connection;  
import java.sql.ResultSet;   
import java.sql.Statement;  
import java.sql.DriverManager;    
public class HiveAlterRenameTo {     
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";          
public static void main(String[] args) throws SQLException {             
// Register driver and create driver instance        
Class.forName(driverName);                
// get connection        
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");                
// create statement        
Statement stmt = con.createStatement();                
// execute statement        
stmt.executeQuery("ALTER TABLE employee RENAME TO emp;");        
System.out.println("Table Renamed Successfully");        
con.close();     
}  }

将该程序保存在一个名为HiveAlterRenameTo.java文件。使用下面的命令来编译和执行这个程序。

$ javac HiveAlterRenameTo.java  $ java HiveAlterRenameTo

输出

Table renamed successfully. 

Change 语句

下表包含employee表的字段,它显示的字段要被更改(粗体)。

下面查询重命名使用上述数据的列名和列数据类型:

hive> ALTER TABLE employee CHANGE name ename String;  
hive> ALTER TABLE employee CHANGE salary salary Double; 

JDBC 程序

下面给出的是使用JDBC程序来更改列。

import java.sql.SQLException;  
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.sql.DriverManager;    
public class HiveAlterChangeColumn {     
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";          
public static void main(String[] args) throws SQLException {             
// Register driver and create driver instance       
Class.forName(driverName);                
// get connection        
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");                
// create statement        
Statement stmt = con.createStatement();                
// execute statement        
stmt.executeQuery("ALTER TABLE employee CHANGE name ename String;");        
stmt.executeQuery("ALTER TABLE employee CHANGE salary salary Double;");                
System.out.println("Change column successful.");        
con.close();     
}  }

将该程序保存在一个名为HiveAlterChangeColumn.java文件。使用下面的命令来编译和执行这个程序。

$ javac HiveAlterChangeColumn.java  $ java HiveAlterChangeColumn 

输出

Change column successful.

添加列语句

下面的查询增加了一个列名dept在employee表。

hive> ALTER TABLE employee ADD COLUMNS (     
> dept STRING COMMENT 'Department name');

JDBC 程序

JDBC程序添加列到表如下。

import java.sql.SQLException;  
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.sql.DriverManager;    
public class HiveAlterAddColumn {     
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";          
public static void main(String[] args) throws SQLException {             
// Register driver and create driver instance        
Class.forName(driverName);          
// get connection        
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");          
// create statement        
Statement stmt = con.createStatement();                
// execute statement        
stmt.executeQuery("ALTER TABLE employee ADD COLUMNS " 
+ " (dept STRING COMMENT 'Department name');");        
System.out.prinln("Add column successful.");                
con.close();     
}  }

将该程序保存在一个名为HiveAlterAddColumn.java文件。使用下面的命令来编译和执行这个程序。

$ javac HiveAlterAddColumn.java  $ java HiveAlterAddColumn

输出

Add column successful. 

REPLACE语句

以下从employee表中查询删除的所有列,并使用emp替换列:

hive> ALTER TABLE employee REPLACE COLUMNS (      
> eid INT empid Int,      
> ename STRING name String);

JDBC 程序

下面给出的是JDBC程序使用empid代替eid列,name代替ename列。

import java.sql.SQLException;  
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.sql.DriverManager;    
public class HiveAlterReplaceColumn {       
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";          
public static void main(String[] args) throws SQLException {             
// Register driver and create driver instance        
Class.forName(driverName);                
// get connection        
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");                
// create statement        
Statement stmt = con.createStatement();                
// execute statement        
stmt.executeQuery("ALTER TABLE employee REPLACE COLUMNS "           
+" (eid INT empid Int,"           +" ename STRING name String);");                   
System.out.println(" Replace column successful");        
con.close();     
}  }

将该程序保存在一个名为HiveAlterReplaceColumn.java文件。使用下面的命令来编译和执行这个程序。

$ javac HiveAlterReplaceColumn.java  $ java HiveAlterReplaceColumn

输出:

Replace column successful

 


    您可以捐助,支持我们的公益事业。

金额: 1元 10元 50元

姓名:

邮件:

电话:

公司:

说明:

认证码: 验证码,看不清楚?请点击刷新验证码 必填



 
 捐助