【问题标题】:How to get/generate the create statement for an existing hive table?如何获取/生成现有配置单元表的创建语句?
【发布时间】:2013-08-10 15:27:56
【问题描述】:

假设您在 Hive 中已经有“表”,是否有像其他数据库一样的快速方法来获取该表的“CREATE”语句?

【问题讨论】:

    标签: sql hive hiveql


    【解决方案1】:

    As of Hive 0.10 这个patch-967 实现了SHOW CREATE TABLE,它“显示了创建给定表的CREATE TABLE 语句,或创建给定视图的CREATE VIEW 语句。”

    用法:

    SHOW CREATE TABLE myTable;
    

    【讨论】:

      【解决方案2】:

      为 Hive 数据库中的所有表生成创建表 DDL 并导出到文本文件以供稍后运行的步骤:

      第 1 步)
      使用以下内容创建一个.sh 文件,例如hive_table_ddl.sh

      #!/bin/bash
      rm -f tableNames.txt
      rm -f HiveTableDDL.txt
      hive -e "use $1; show tables;" > tableNames.txt  
      wait
      cat tableNames.txt |while read LINE
         do
         hive -e "use $1;show create table $LINE;" >>HiveTableDDL.txt
         echo  -e "\n" >> HiveTableDDL.txt
         done
      rm -f tableNames.txt
      echo "Table DDL generated"
      

      第 2 步)

      通过传递 'db name' 作为参数运行上述 shell 脚本

      >bash hive_table_dd.sh <<databasename>>
      

      输出:

      您的数据库的所有创建表语句都将写入HiveTableDDL.txt

      【讨论】:

      • 我们如何确保桶和存储格式将被复制到新表中。
      • 您还应该在每个语句后附加一个分号,以便可以通过说 hive -f HiveTableDDL.txt 来执行脚本。
      • 这个脚本对我来说失败,出现以下错误:编译语句时出错:FAILED: ParseException line 1:18 cannot identify input near '|' '|'在表名中,我使用直线执行此脚本,因为 HDP 3.0 不支持 hive-shell 访问
      • @cfeduke 这个脚本给出了配置单元表的位置。如何跳过位置部分以便在另一个配置单元位置运行这些 ddls?无法更改超过 1000 个表
      【解决方案3】:

      Describe Formatted/Extended 将显示 hive 中表的数据定义

      hive> describe Formatted dbname.tablename;
      

      【讨论】:

        猜你喜欢
        • 2011-02-05
        • 2020-09-27
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        • 1970-01-01
        • 2015-06-07
        • 2010-10-30
        • 2019-11-21
        相关资源
        最近更新 更多