Как скопировать всю таблицу hive из одной базы данных в другую базу данных

У меня есть db по умолчанию в таблице hive, которая содержит 80 таблиц .
Я создал еще одну базу данных, и я хочу скопировать все таблицы из БД по умолчанию в новые базы данных.

есть ли способ скопировать из одной БД в другую БД, не создавая отдельную таблицу.

пожалуйста, дайте мне знать, если любое решение.. Заранее спасибо

4 ответов


Я могу придумать пару вариантов.

  1. используйте CTAS.

    CREATE TABLE NEWDB.NEW_TABLE1 AS select * from OLDDB.OLD_TABLE1;
    CREATE TABLE NEWDB.NEW_TABLE2 AS select * from OLDDB.OLD_TABLE2;
    ...
    
  2. использовать функцию импорта 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’;