博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive - Create Table&Drop Table & ALTER Table(中)
阅读量:5158 次
发布时间:2019-06-13

本文共 6916 字,大约阅读时间需要 23 分钟。

译注:书接,了解过创建表以及load data后,假如发现需要更改表字段类型或者添加表字段,怎么办?这篇文章将进一步了解具体细节。

 

This chapter explains how to alter the attributes of a table such as changing its table name, changing column names, adding columns, and deleting or replacing columns.

Alter Table Statement

It is used to alter a table in Hive.

Syntax

The statement takes any of the following syntaxes based on what attributes we wish to modify in a table.

ALTER TABLE name RENAME TO new_nameALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])ALTER TABLE name DROP [COLUMN] column_name ------------ 译注:这个drop命令,我在工作中,并没有生效,而是利用表级别的REPLACE进行替换式删除字段的 ALTER TABLE name CHANGE column_name new_name new_typeALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

 

Rename To… Statement

The following query renames the table from employee to emp.

hive> ALTER TABLE employee RENAME TO emp;

 

JDBC Program

The JDBC program to rename a table is as follows.

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();   }}

 

Save the program in a file named HiveAlterRenameTo.java. Use the following commands to compile and execute this program.

$ javac HiveAlterRenameTo.java$ java HiveAlterRenameTo

 

Output:

Table renamed successfully.

Change Statement

The following table contains the fields of employee table and it shows the fields to be changed (in bold).

Field Name Convert from Data Type Change Field Name Convert to Data Type
eid int eid int
name String ename String
salary Float salary Double
designation String designation String

The following queries rename the column name and column data type using the above data:

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

 

JDBC Program

Given below is the JDBC program to change a column.

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();   }}

 

Save the program in a file named HiveAlterChangeColumn.java. Use the following commands to compile and execute this program.

$ javac HiveAlterChangeColumn.java$ java HiveAlterChangeColumn

 

Output:

Change column successful.

Add Columns Statement

The following query adds a column named dept to the employee table.

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

-- 有一些文章里说 add columns dept STRING COMMENT 'comment' ;但是在一些高版本里,需要把你需要加的列放到括号里()

JDBC Program

The JDBC program to add a column to a table is given below.

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();   }}

 

Save the program in a file named HiveAlterAddColumn.java. Use the following commands to compile and execute this program.

$ javac HiveAlterAddColumn.java$ java HiveAlterAddColumn

 

Output:

Add column successful.

Replace Statement

The following query deletes all the columns from the employee table and replaces it with emp and name columns:

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

 

JDBC Program

Given below is the JDBC program to replace eid column with empid and ename column with name.

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();   }}

 

Save the program in a file named HiveAlterReplaceColumn.java. Use the following commands to compile and execute this program.

$ javac HiveAlterReplaceColumn.java$ java HiveAlterReplaceColumn

 

Output:

Replace column successful. Drop Table主要就一个命令,就不单独再搞一篇了,在此一并搞了。 --------------------------------------------------

Drop Table Statement

The syntax is as follows:

DROP TABLE [IF EXISTS] table_name;

 

The following query drops a table named employee:

hive> DROP TABLE IF EXISTS employee;

 

On successful execution of the query, you get to see the following response:

OKTime taken: 5.3 seconds hive>
--------------------------------------------------- 译注:本章中一些操作,我个人并没有一一验证。后续使用到并验证后,如果有问题,会备注进去。目前里面的内容基本都是英文文章里的内容。 ------------ 英文地址:https://www.tutorialspoint.com/hive/hive_alter_table.htm

转载于:https://www.cnblogs.com/hager/p/6323360.html

你可能感兴趣的文章
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>