话不多说直接上脚本好了,拷贝下来可直接运行,最终的hql语句在bak_table_ddl.hql
#!/bin/bash
hive -e "show databases "> database.txt
rm -rf bak_table_ddl.hql
while read database
do
hive -e "show tables in $database" > tables.txt
while read table
do
echo -n `hive -e " show create table ${database}.${table};"` >>bak_table_ddl.hql
echo ";" >>bak_table_ddl.hql
done < tables.txt
done < database.txt
1. 想偷懒的可直接下载下来:
链接: https://pan.baidu.com/s/1m7v-JMY0Fs5u8N1bO2p8mQ 提取码: i2sg
2.下载下来后,可直接运行
sh bak_hive_ddl.sh
如果不是可执行文件的,执行以下linux chmod命令即可
sudo chmod +x bak_hive_ddl.sh
3.执行bak_table_ddl.hql 前需要先手动创建databases,所有的db 在 databases.txt 里面
hive -e 'create database if not exists db_middle'
3.1 或者直接在hive CLI窗口运行
进入hive CLI窗口
hive
执行创建db命令
create database if not exists db_middle;
4.创建完database 之后,运行table ddl
4.1 直接运行不进入HIVE CLI窗口
hive -f bak_table_ddl.hql
这里可能会产生的错误有,执行sql语句错误,或者是init chdfs failed,可能引起的原因是批量写入hdfs io速率问题
解决:打开HIVE CLI小窗口张贴进去运行即可,遇到sql语句错误会停止直接修改执行错误的,正常的都会执行
4.2 进入 HIVE CLI窗口 张贴hql 直接运行
hive