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


90

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

Answers:



26

为Hive数据库中的所有表生成Create table ddls并将其导出到文本文件中以供以后运行的步骤:

步骤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


1
我们如何确保存储桶和存储格式将被复制到新表中。
YouAreAwesome

您还应该在每个语句后添加分号,以便可以通过说hive -f HiveTableDDL.txt来执行脚本。
Muton

该脚本对我而言失败,并出现以下错误:编译语句时出错:失败:ParseException行1:18无法识别“ |”附近的输入 '|' 在表名中,我正在使用beeline执行此脚本,因为HDP 3.0不支持配置单元访问
-Abhinav

@cfeduke该脚本提供了配置单元表的位置。如何跳过位置部分以便在另一个配置单元位置运行这些ddls?无法更改1000多个表
user1

2

描述格式化/扩展将在配置单元中显示表的数据定义

hive> describe Formatted dbname.tablename;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.