如何获取/生成现有配置单元表的创建语句?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于如何获取/生成现有配置单元表的创建语句?的主要内容,如果未能解决你的问题,请参考以下文章

获取 MySQL 中现有行的插入语句

如何使用 JDBC 在 Spark 中的其他数据库中获取表的创建语句

sqlserver用管理器建表后如何查看创建表的语句?谢谢!!

sqlserver用管理器建表后如何查看创建表的语句?谢谢!!

如何通过 BigQuery 中的 WebUI 导出现有表的架构?

如何获取将在 PHPMyAdmin 中重新创建 sql 表的查询