Есть ли способ массового переименования таблиц улья? - PullRequest
0 голосов
/ 31 октября 2019

Я хочу добавить префикс к некоторым таблицам улья, что-то вроде следующего:

alter table sales_info rename to archived_sales_info;

, за исключением того, что есть около 200 таблиц, и я бы предпочел не делать их все вручную. Есть ли способ сделать это с помощью самого куста или сценария bash?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Вы можете создать скрипт оболочки следующим образом:

#!/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

Вы можете вносить изменения в код в соответствии с вашими требованиями. Но это должно решить вашу цель без каких-либо изменений.

0 голосов
/ 31 октября 2019

Поскольку это почти наверняка единоразово, учитывая следующий процесс:

  1. Список таблиц
  2. Скопируйте в ваш любимый редактор, например, Excel
  3. Используйте список таблиц, чтобы создать список операторов alter

Конечно, вы также можете запустить скрипт, но это самый быстрый, который я мог придумать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...