- Hive 教程
- Hive - 首页
- Hive - 简介
- Hive - 安装
- Hive - 数据类型
- Hive - 创建数据库
- Hive - 删除数据库
- Hive - 创建表
- Hive - 修改表
- Hive - 删除表
- Hive - 分区
- Hive - 内置运算符
- Hive - 内置函数
- Hive - 视图和索引
- HiveQL
- HiveQL - Select Where
- HiveQL - Select Order By
- HiveQL - Select Group By
- HiveQL - Select Joins
- Hive 有用资源
- Hive - 问答
- Hive - 快速指南
- Hive - 有用资源
Hive - 修改表
本章解释如何更改表的属性,例如更改表名、更改列名、添加列以及删除或替换列。
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://127.0.0.1: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表的字段,并显示要更改的字段(以粗体显示)。
字段名 | 转换自数据类型 | 更改字段名 | 转换到数据类型 |
---|---|---|---|
eid | int | eid | int |
name | String | ename | String |
salary | Float | salary | Double |
designation | String | designation | String |
以下查询使用上述数据重命名列名和列数据类型
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://127.0.0.1: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.
Add Columns 语句
以下查询向 employee 表添加一个名为 dept 的列。
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://127.0.0.1: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和name列
hive> ALTER TABLE employee REPLACE COLUMNS ( eid INT empid Int, ename STRING name String);
JDBC 程序
以下是将eid列替换为empid,将ename列替换为name的JDBC程序。
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://127.0.0.1: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.
广告