zoukankan      html  css  js  c++  java
  • Hive笔记之数据库操作

    创建数据库

    hive创建数据库的最简单写法和mysql差不多:

    create database foo;

    仅当名为foo的数据库当前不存在时才创建:

    create database if not exists foo;

    创建数据库时指定位置,这个位置一般是在hdfs上的位置:

    create database foo location '/db/foo';

    查看已经创建的数据库:

    show databases ;

    使用通配符查看foo开头的数据库:

    show databases like 'foo.*';

    查看创建数据库的语句:

    show create database foo ;

    image

    hive为每一个数据库创建一个目录,这个数据库中的表将会以子目录的形式放在这个数据库目录下

    有一个例外就是default数据库中的表,default数据库没有自己的目录,所以是直接放在/user/hive/warehouse下面的:

    image 

    同样的,当创建数据库如果没有指定存储位置,默认就是在/user/hive/warehouse/下的:

    image

    数据库描述信息

    在创建数据库时可以指定描述性信息:

    create database foo comment 'this is foo database';

    通过describe database可以查看到数据库的详细信息:

    describe database foo;

    image

    数据库键值对信息

    数据库可以有一些描述性的键值对信息,在创建时添加:

    create database foo with dbproperties ('own'='cc', 'day'='20180120');

    查看数据库的键值对信息:

    describe database extended foo;

    image

    要修改数据库的键值对信息:

    alter database foo set dbproperties ('k1'='v1', 'k2'='v2');

    image

    删除数据库

    drop database if exists foo;

    注意:

    默认情况下是不允许直接删除一个有表的数据库的:

    image

    删除一个有表的数据库有两种办法:

    1. 先把表删干净,再删库。

    2. 删库时在后面加上cascade,表示级联删除此数据库下的所有表:

    drop database if exists foo cascade;

    prompt显示当前数据库名称

    如果在一个数据库很多的环境下工作,需要 在不同的库之间切来切去(手动敲查询的时候全使用dbName.table可不是什么好主意…),可能一不小心就忘记自己当前在哪个数据库下了,可以通过设置一个属性改变当前的命令提示符,更专业的说法是prompt(用过CLI界面的应该对这个概念很熟悉),通过设置hive.cli.print.current.db属性可以在hive cli中显示当前数据库的名称,比如当前的数据库名称是foo:

    set hive.cli.print.current.db=true

    image

    .

  • 相关阅读:
    数据挂载
    LVS学习与测试——NAT模式
    VirtualBox 网络设置 VirtualBox中客机与主机互通
    [原]两个android程序间的相互调用(apk互调)
    [置顶] Android Service与Activity之间通信的几种方式
    [置顶] android 开发中判断网络是否连接的代码
    [置顶] 判断时间格式是否正确
    [置顶] 输出map信息
    [置顶] checkEmail判断邮箱格式
    [置顶] checkPhone判断手机号格式
  • 原文地址:https://www.cnblogs.com/cc11001100/p/9033930.html
Copyright © 2011-2022 走看看