有没有办法批量重命名配置单元表?
Is there a way to bulk rename hive tables?
我想为一些配置单元表添加前缀,如下所示:
alter table sales_info rename to archived_sales_info;
除非有大约 200 张桌子,我不想全部手工完成。有什么办法可以通过配置单元本身或 bash 脚本来做到这一点?
考虑到以下流程,这几乎肯定是一次性的事情:
- 列出表格
- 复制到您喜欢的编辑器,例如excel
- 使用表列表创建一个 alter 语句列表
当然你也可以运行脚本,但这是我能想到的最快的了。
您可以创建 shell 脚本如下
#!/bin/bash
hive -S -e " show tables" > table_list.txt
while read -r line;
do
hive -S -e "alter table $line rename to archived_$line;"
echo $line
done < table_list.txt
之前:
> show tables;
OK
t1
t2
Time taken: 0.016 seconds, Fetched: 2 row(s)
执行脚本后:
> show tables;
OK
archived_t1
archived_t2
Time taken: 0.016 seconds, Fetched: 2 row(s)
在循环中添加了回显,以便您可以跟踪哪些表已更改,您也可以将其重定向到文件,如 echo $line >> changed.txt
您可以根据自己的需要修改代码。但它应该无需任何更改即可解决您的目的。
我想为一些配置单元表添加前缀,如下所示:
alter table sales_info rename to archived_sales_info;
除非有大约 200 张桌子,我不想全部手工完成。有什么办法可以通过配置单元本身或 bash 脚本来做到这一点?
考虑到以下流程,这几乎肯定是一次性的事情:
- 列出表格
- 复制到您喜欢的编辑器,例如excel
- 使用表列表创建一个 alter 语句列表
当然你也可以运行脚本,但这是我能想到的最快的了。
您可以创建 shell 脚本如下
#!/bin/bash
hive -S -e " show tables" > table_list.txt
while read -r line;
do
hive -S -e "alter table $line rename to archived_$line;"
echo $line
done < table_list.txt
之前:
> show tables;
OK
t1
t2
Time taken: 0.016 seconds, Fetched: 2 row(s)
执行脚本后:
> show tables;
OK
archived_t1
archived_t2
Time taken: 0.016 seconds, Fetched: 2 row(s)
在循环中添加了回显,以便您可以跟踪哪些表已更改,您也可以将其重定向到文件,如 echo $line >> changed.txt
您可以根据自己的需要修改代码。但它应该无需任何更改即可解决您的目的。