Как скопировать всю таблицу hive из одной базы данных в другую базу данных
У меня есть таблица по умолчанию db в таблице hive, которая содержит 80 таблиц.
Я создал еще одну базу данных, и я хочу скопировать все таблицы из базы данных по умолчанию в новые базы данных.
Можно ли каким-либо образом скопировать из одной базы данных в другую базу данных без создания отдельной таблицы.
Пожалуйста, дайте мне знать, если какое-либо решение..
Спасибо заранее
Ответы
Ответ 1
Я могу представить пару вариантов.
Надеюсь, это поможет.
Ответ 2
создать внешнюю таблицу new_db.table, например old_db.table location '(путь файла в файле hdfs)';
Если у вас есть раздел в таблице, вам нужно добавить раздел в new_db.table.
Ответ 3
Это, пожалуй, самый быстрый и простой способ скопировать/переместить таблицы из одной базы данных в другую.
Переместить таблицу источник
Начиная с версии 0.14, вы можете использовать следующую инструкцию для перемещения таблицы из одной базы данных в другую в том же метасторе:
alter table old_database.table_a rename to new_database.table_a;
Вышеуказанные операторы также будут перемещать данные таблицы по hdfs, если table_a
- управляемая таблица.
Скопировать таблицу
Вы всегда можете использовать операторы CREATE TABLE <new_db>.<new_table> AS SELECT * FROM <old_db>.<old_table>;
. Но я считаю, что этот альтернативный метод копирования базы данных с помощью hdfs dfs -cp
, а затем создание таблиц с LIKE
может быть немного быстрее, если ваши таблицы огромны:
hdfs dfs -cp /user/hive/warehouse/<old_database>.db /user/hive/warehouse/<new_database>.db
And then in hive:
CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
.
.
.
Ответ 4
Вы можете выбрать один из следующих вариантов:
Синтаксис выглядит примерно так:
ТАБЛИЦА ЭКСПОРТА table_or_partition TO hdfs_path;
IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION [table_location]];
Некоторые примеры утверждений будут выглядеть так:
ЭКСПОРТНАЯ ТАБЛИЦА "Место в hdfs";
Использовать test_db;
IMPORT FROM 'location in hdfs';
Экспортировать импорт можно также на основе раздела:
РАЗДЕЛ ЭКСПОРТНОГО ТАБЛИЦЫ (loc = "USA" ) в "местоположение в hdfs";
Ниже импортируются команды импорта во внешнюю таблицу вместо управляемой
ИМПОРТНАЯ ВНЕШНЯЯ ТАБЛИЦА FROM 'location in hdfs' LOCATION '/location/of/external/table;