Как скопировать всю таблицу hive из одной базы данных в другую базу данных
У меня есть db по умолчанию в таблице hive, которая содержит 80 таблиц .
Я создал еще одну базу данных, и я хочу скопировать все таблицы из БД по умолчанию в новые базы данных.
есть ли способ скопировать из одной БД в другую БД, не создавая отдельную таблицу.
пожалуйста, дайте мне знать, если любое решение.. Заранее спасибо
4 ответов
Я могу придумать пару вариантов.
-
используйте CTAS.
CREATE TABLE NEWDB.NEW_TABLE1 AS select * from OLDDB.OLD_TABLE1; CREATE TABLE NEWDB.NEW_TABLE2 AS select * from OLDDB.OLD_TABLE2; ...
использовать функцию импорта Hive https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport
надеюсь, что это помогает.
создать внешнюю таблицу new_db.стол, как old_db.расположение таблицы '(путь к файлу в файле hdfs)';
Если у вас есть раздел в таблице, вам нужно добавить раздел в new_db.таблица.
это наверное самый быстрый и простой способ для копирования / переноса таблиц из одной БД в другую.
перенести стол источник
С 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
а потом в улей:
CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
вы можете подойти к одному из следующих вариантов:
синтаксис выглядит примерно так: Экспорт таблицы table_or_partition в hdfs_path; Импорт [[внешняя] таблица table_or_partition] из hdfs_path [расположение [table_location]];
примеры заявлений будет выглядеть: Экспорт таблицы в "расположение в hdfs";
использовать test_db; Импорт из "расположение в hdfs";
экспорт импорт может быть appled на основе раздела, а также: ТАБЛИЦА ЭКСПОРТА Раздел (loc= "USA") на "местоположение в hdfs";
приведенные ниже команды импорта импортируются во внешнюю таблицу вместо управляемой Импортируйте внешнюю таблицу из 'location in hdfs' LOCATION ‘ / location/of / external / table’;