Hive数据定义语言-DDL-建表基础语法(含四个实践案例)

本文详细介绍了Hive的数据定义语言DDL,包括建表语法和数据类型,重点讲解了四种实践案例,涵盖了原生数据类型、复杂数据类型、默认分隔符的使用以及指定数据存储路径的操作,旨在帮助读者掌握Hive建表技巧。

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

1. 概述

  • 数据定义语言DDL,是SQL语言集中对数据库内部的对象结构进行创建删除修改等的操作语言,这些数据库对象包括database、table、view、index等。
  • DDL核心语法由CREATE、ALTER与DROP三个所组成。DDL并不涉及表内部数据的操作。
  • 在某些上下文中,该术语也称为数据描述语言,因为它描述了数据库表中的字段何记录。

2. 建表语法

2.1 完整建表语法树

在这里插入图片描述

注意事项

  • 蓝色字体是建表语法的关键字,用户指定某些功能。
  • [ ] 中括号的语法表示可选。
  • | 表示使用的时候,左右语法二选一。
  • 建表语句中的语法顺序要和语法树中顺序保持一致

2.2 数据类型

Hive数据类型指的是表中列的字段类型

  • 整体分为两类:原生数据类型复杂数据类型
    • 原生数据类型包括:数据类型、时间日期类型、字符串类型、杂项数据类型。
    • 复杂数据类型包括:array数据、map映射、struct结构、union联合体。
      在这里插入图片描述
  • 原生数据类型:
    在这里插入图片描述
  • 复杂数据类型:

在这里插入图片描述

注意事项

  • HIive SQL中,数据类型英文字母大小写不敏感;
  • 除SQL数据类型外,还支持Java数据类型,比如字符串string;
  • 复杂数据类型的使用通常需要和分隔符指定语法配合使用;
  • 如果定义的数据类型和文件不一致,Hive会尝试隐式转换,但不保证成功。

隐式转换

  • 与标准SQL类似,HQL支持隐式和显示类型转换。
  • 原生类型从窄类型到宽类型的转换成为隐式转换,反之,则不允许。
  • 下表描述了类型之间允许的隐式转换:
    在这里插入图片描述

显示转换

  • 显示转换使用CAST函数。
    例如,CAST (‘100’ as INT) 会将100字符串转换为100整数值。
    如果强制转换失败,例如CAST (’Allen’ as INT) ,该函数返回NULL。

3. 案例练习

3.1 原生

<think>好的,我现在需要帮助用户在Hive中查看已创结构或语句。首先,我应该回忆一下Hive的相关命令,可能之前学习过一些基本的Hive操作。根据用户提供的引用内容,特别是引用[2]和引用[4],里面提到了Hive语句和查询结构的方法。 首先,用户的问题是如何查看结构或语句。根据引用[2],Hive查询结构的语句是“show create table 名;”,这应该是最直接的方法。例如,用户执行“show create table tmp_001;”就能得到语句,包括的所有列、分区信息、存储格式等。这个方法应该能输出完整的CREATE TABLE语句,类似于创时的DDL。 其次,用户可能还想简单地查看的字段结构,比如列名、数据类型和注释。这时候可以使用“DESCRIBE”命令,分为普通描述和详细描述。例如,“DESCRIBE extended 名;”或者更详细的“DESCRIBE formatted 名;”。这些命令会显示的列信息、分区信息、存储位置等,但格式可能不如SHOW CREATE TABLE那么直接。 另外,引用[4]中提到了Hive语法,说明可能被分区或分桶,所以在查看结构时需要注意这些部分。使用“DESCRIBE FORMATTED”可能会更清晰地展示这些详细信息,比如分区键、存储格式和的类型(内部或外部)。 还需要考虑用户是否有权限访问这些,以及是否存在。如果不存在,执行这些命令会报错,所以可能需要先确认名正确,或者使用“SHOW TABLES”来列出所有。 总结一下,用户需要两个层面的信息:一是完整的语句,二是结构的详细描述。对应的命令分别是“SHOW CREATE TABLE”和“DESCRIBE FORMATTED”。此外,如果用户想查看的字段注释,可以在DESCRIBE的结果中看到,或者在创时已经包了注释,这些信息也会被展示出来。 可能还需要提醒用户,Hive版本不同可能会有细微差异,但大部分情况下这些命令是通用的。另外,分区的信息会在结果中单独列出,用户需要注意查看PARTITIONED BY的部分。 最后,根据用户提供的引用内容,特别是引用[2]中的示例,确保给出的命令正确无误,并且举例说明,这样用户更容易理解和操作。</think>在 Hive 中查看结构或语句的常用方法如下: --- ### 1. **查看语句** 使用 `SHOW CREATE TABLE` 命令可直接获取完整的语句(包字段、分区、存储格式等信息): ```sql SHOW CREATE TABLE 名; ``` 例如: ```sql SHOW CREATE TABLE tmp_001; -- 输出结果包字段定义、分区、分隔符等[^2] ``` --- ### 2. **查看结构详情** #### (1) 基本字段信息 使用 `DESCRIBE` 命令查看字段、类型及注释: ```sql DESCRIBE 名; -- 简略信息 DESCRIBE EXTENDED 名; -- 详细信息(包存储位置、类型等) DESCRIBE FORMATTED 名; -- 格式化输出(推荐,包分区、存储格式等)[^4] ``` #### (2) 示例输出 对于分区 `tmp_001`,执行 `DESCRIBE FORMATTED tmp_001` 会显示: - **列定义**:`etl_time`, `day_id`, `subs_id`, `msisdn` - **分区字段**:`p_day_id`(通过 `PARTITIONED BY` 定义) - **存储格式**:如 `textfile`,字段分隔符 `|`(通过 `ROW FORMAT` 定义) --- ### 3. **查看所有** 若不确定名,可先列出所有: ```sql SHOW TABLES; -- 列出当前数据库中的 SHOW TABLES LIKE 'tmp_*'; -- 按模式过滤名 ``` --- ### 对比不同方法 | 方法 | 输出内容 | 适用场景 | |-----------------------|-------------------------------------|----------------------------| | `SHOW CREATE TABLE` | 完整的语句(可直接复制重) | 需要重或迁移结构时 | | `DESCRIBE FORMATTED` | 结构、分区、存储格式、HDFS路径等详细信息 | 调试或分析配置时 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值