如何获取/生成现有配置单元表的创建语句?
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;
【讨论】:
以上是关于如何获取/生成现有配置单元表的创建语句?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JDBC 在 Spark 中的其他数据库中获取表的创建语句
sqlserver用管理器建表后如何查看创建表的语句?谢谢!!
sqlserver用管理器建表后如何查看创建表的语句?谢谢!!