Hive建库浅析

本文介绍了数据库的基本操作,包括创建、查看和删除数据库的SQL命令。通过`createdatabaseifnotexists`创建数据库,`showdatabases`显示所有库,`dropdatabaseifexists`删除数据库。同时,强调了在进行数据库管理时需要注意的数据安全和谨慎操作的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 建库
create database if not exists db_temp;
  • 显示已创建的库
--显示所有库
show databases;

--显示指定库
show databases like '*temp*';
  • 查询当前库
select current_database();
  • 删库(删库需谨慎,否则离跑路就不远了 =_=)
drop database if exists db_temp;
### Hive数据及表的语法与示例 #### 数据Hive 中,可以通过 `CREATE DATABASE` 或 `CREATE SCHEMA` 命令来创一个新的数据。命令的具体语法如下: ```sql CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT 'database_comment'] [LOCATION 'directory_path'] [WITH DBPROPERTIES (property_name=property_value, ...)]; ``` - `[IF NOT EXISTS]`: 如果指定名称的数据不存在,则创新数据。 - `[COMMENT 'database_comment']`: 可选字段,用于描述该数据的信息。 - `[LOCATION 'directory_path']`: 指定存储数据的位置路径,默认情况下会在 HDFS 的 `/user/hive/warehouse` 下创目录。 - `[WITH DBPROPERTIES (...)]`: 设置数据属性。 例如,下面是一个简单的例子[^3]: ```sql CREATE DATABASE IF NOT EXISTS my_database COMMENT 'This is a test database' LOCATION '/user/hive/my_database'; ``` 此命令将在 HDFS 上创名为 `my_database` 的数据,并附带注释说明以及自定义位置。 要切换到某个特定数据下执行查询或其他操作,可使用 `USE` 子句: ```sql USE my_database; ``` 这使得后续所有的 SQL 查询都作用于当前选定的数据中。 #### 表创 Hive 支持多种类型的表格结构,包括内部表(Managed Table)、外部表(External Table),还有临时表(Temporary Table)等。 ##### 内部表(Managed Table) 这是最常用的表形式之一,在删除此类表时其元数据和实际的数据都会被清除掉。基本语法为: ```sql CREATE TABLE [IF NOT EXISTS] table_name ( col1 data_type, col2 data_type, ... ) [COMMENT 'table_comment'] [PARTITIONED BY (col_name data_type)] [CLUSTERED BY (col_name) INTO num_buckets BUCKETS] [SORTED BY (col_name [ASC|DESC])] [ROW FORMAT DELIMITED FIELDS TERMINATED BY char LINES TERMINATED BY char] [STORED AS file_format]; ``` 举个实例演示如何构一张包含分区信息并采用 ORC 文件格式储存的新表[^1]: ```sql CREATE TABLE employees( id INT, name STRING, salary FLOAT, join_date DATE ) COMMENT 'Employee details with partitioning on department.' PARTITIONED BY(department STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS ORC; ``` 上述脚本立了一个员工记录表,其中按部门划分了多个分区以便更高效地检索相关联的数据集。 ##### 外部表(External Table) 当不想让 Hive 控制底层数据文件生命周期的时候可以选择这种方式。即使移除对应的 Hive 表对象也不会影响原始数据源的存在状态。其声明方法几乎相同只是多了前缀关键词 EXTERNAL 而已。 ```sql CREATE EXTERNAL TABLE external_table_name ( column_definitions... ) [LOCATION hdfs_directory_path]; ``` 比如这样设置指向已有 HDFS 地址上的 CSV 文档作为输入资源: ```sql CREATE EXTERNAL TABLE logs_ext ( log_time TIMESTAMP, message STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ('field.delim'=',') LOCATION '/logs/csv/'; ``` 这里指定了 SerDe 类型处理逗号分割符的情况。 ##### 临时表(Temporary Table) 这类特殊用途的表只存在于发起它们的那个 session 生命周期期间结束之后就会消失不见再也无法访问到了。通常适用于那些只需要短期存在的中间计算成果或者测试验证场景之中。可通过附加 TEMPORARY 标识位实现快速搭过程[^2]. ```sql -- 方法一:通过列定义直接生成 CREATE TEMPORARY TABLE temp_employee ( emp_id INT, first_name STRING, last_name STRING ); -- 方法二:基于现有表复制架构 CREATE TEMPORARY TABLE temp_copy LIKE permanent_table; -- 方法三:利用 SELECT INTO 构造初始内容填充 CREATE TEMPORARY TABLE temp_results AS SELECT * FROM source_data WHERE condition=true; ``` 以上三种途径均展示了不同风格下的临时表构造技巧供开发者灵活选用满足各自需求特点。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值