Hive学习(一)-表及数据库的创建删除基本操作

1.查看表结构字段

     hive>desc tablename;

     hive>desc formatted tablename;//显示tablename的详细表结构信息

     当使用formatted时,用于可以看到该表是外部表还是内部表(管理表)

     如果是内部表,则输出Table Type:             MANAGED_TABLE   
     如果是外部表,则输出Table Type:             EXTERNAL_TABLE

2.在Hive中执行Hadoop的dfs命令

    只需要将hadoop命令中的关键字'hadoop','hdfs'等去掉,如

    hive>dfs -ls /;

3.创建表

   hive默认是创建内部表(也称为管理表),即表的存放位置是在hive.metastore.warehouse.dir属性指定的地方。对于本地模式,该属性默认值是file:////user/hive/warehouse,对于其他模式,默认存储路径是hdfs://namenoe_server/user/hive/warehouse。

  (1)创建内部表

  hive>create table tablename(字段1 数据类型,字段2 数据类型,字段3 数据类型,......,字段n 数据类型);

   其中基本数据类型如下:

      

数据类型 长度 例子
tinyint 1byte有符合整数 20
smalint 2byte有符合整数 20
int 4byte有符合整数 20
bigint 8byte有符合整数 20
boolean 布尔类型,true或者false true
float 单精度浮点数 3.14159
double 双精度浮点数 3.14159
string 字符串,可以使用单引号或者双引号 'now is the time',“for all good men”
timestamp(v0.8.0+) 整数,浮点数或者字符串 1327882394,
1327882394.123456789,和'2012-02-03    12:34:56.123456789'
binary(v0.8.0+) 字节数组
 

   (2)创建外部表

      a.指定hdfs路径

       hive>create external table test(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION ‘/test/hello′;

      b.指定本地路径

      hive>create external table test(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION ‘file:///home/test′;


      注意:当使用like拷贝一张已经存在的表的表模式时:

      如hive>create table tablename1 like tablename2;如果tablename2(源表)是内部表,则tablename1也是内部表,如果tablename2是外部内,则tablename1也是外部表。

      如hive>create external tablename1 like tablename2,则生成的tablename1是外部表。

4.查看Hive中所包含的数据库

     hive>show databases;

     hive>show databases like 'abc.*';显示以abc开头的所有数据库

5.创建数据库

    hive>create database if not exists databasename;

    hive>create database databasename comment 'my database';//comment用于添加数据库的描述信息

6.删除数据库

   hive>drop database if exists databasename;

7.切换数据库

   hive>use databasename;

8.查看数据库信息

   hive>desc database databasename;

9.显示所有表

   hive>show tables;

   hive>show tables like 'abc.*';//显示以abc开头的所有表

   hive>show tables in databasename;//用于显示指定数据库中的所有表

10.删除表

   hive>drop table if exists tablename;

   对于管理表,表的元数据信息和表内的数据都会被删除。

   对于外部表,Hive并非认为其完全拥有这份数据。因此,删除该表并不会删除掉这份数据,但是描述表的元数据信   息会被删除掉。

11.修改表

   大多数的表属性可以通过alter table语句来进行修改。alter table仅仅会修改表元数据,表数据本身不会有任何修改。

   11.1表重命名

       hive>alter table old-tablename rename to new_tablename;

   11.2添加列

       hive>alter table tablename add columns(字段1 数据类型,字段2 数据类型,......,字段n 数据类型);

   11.3修改列信息

       alter table tablename change

   column old_colname new_colname col_type

   [first|after col_name]

       a.修改列名

       hive>alter table tablename change column old_colname new_colname string;//将列old_name修改为new_colname,类型为string

       b.修改列位置

       hive>alter table tablename change column col1_name col1_name string after col2_name;//将列col1_name移到   列col2_name后面

       注意:修改列信息的时候,即使字段名或者字段类型没有改变,用户也需要完全指定旧的字段名,并给处新的字段名及新的字段类型。

    11.4删除列

     hive>desc student;

     OK
     name                    string                                      
     age                       int                                         
     sex                       string                                      
     grade                    string                                      
     address                string

     现在删除grade列,执行:

hive> alter table student replace columns(name string,age int,sex string,address string);
OK
Time taken: 4.003 seconds
hive> desc student;
OK
name                	string              	                    
age                 	int                 	                    
sex                 	string              	                    
address             	string              	                    
Time taken: 0.78 seconds, Fetched: 4 row(s)

12.删除表数据

    hive>truncate table tablename;//删除内部表所有数据

       

    hive>insert overwrite table t_table1 select * from t_table1 where XXXX;

其中xxx是需要保留的数据的查询条件。

如果清空表,如下:
insert overwrite table t_table1 select * from t_table1 where 1=0;








你可能感兴趣的:(hive)