Подтвердить что ты не робот

Перенос таблицы улья из одной базы данных в другую

Мне нужно переместить таблицу улья из одной базы данных в другую. Как я могу это сделать?

4b9b3361

Ответ 1

Начиная с версии 0.14, вы можете использовать следующую инструкцию для перемещения таблицы из одной базы данных в другую в том же метасторе:

use old_database;
alter table table_a rename to new_database.table_a

Вышеуказанные операторы также будут перемещать данные таблицы по hdfs, если table_a - управляемая таблица.

Ответ 2

создать внешнюю таблицу new_db.table, например old_db.table location '(путь файла в файле hdfs)';

Если у вас есть раздел в таблице, вам нужно добавить раздел в new_db.table.

Ответ 3

Вы можете попробовать - CTAS

USE NEW_DB;

CREATE TABLE table
AS
SELECT * FROM OLD_DB.table;

DROP TABLE OLD_DB.table;

Ответ 4

Если таблицы секционированы, то в основном вы можете копировать секционированные данные из старой таблицы в новую таблицу и удалять старые таблицы.

  • use new_db;
  • Создать новую таблицу в новой базе данных:

    Create Table table_name;
    
  • Вставьте данные в новые таблицы из старых таблиц с помощью команды:

    insert into new_table_name partition (partition_column='value') 
      select col1, col2, col3, col4 from old_db.old_table_name 
      where partition_column='value';
    

Ответ 5

Это может быть полезно для вас.

EXPORT TABLE table_or_partition TO hdfs_path;
IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION[table_location]];

Некоторые примеры операторов выглядят так:

EXPORT TABLE <table name> TO 'location in hdfs';

Use test_db;
IMPORT FROM 'location in hdfs';

Export Import can be appled on a partition basis as well:
EXPORT TABLE <table name> PARTITION (loc="USA") to 'location in hdfs';

Ниже импортированные команды импортируют во внешнюю таблицу вместо управляемой.

IMPORT EXTERNAL TABLE FROM 'location in hdfs' LOCATION ‘/location/of/external/table’;

Ответ 6

База данных, которую вы хотите перенести, предоставила бы вам соединитель базы данных. С помощью sqoop и соединителя базы данных вы сможете перенести его. было бы здорово, если бы вы более конкретно относились к типу базы данных, которую вы хотите перенести данные, в

Ответ 7

https://issues.apache.org/jira/browse/HIVE-2496

это улучшение по-прежнему открыто. Я знаю, что это возможно в Импале, а не в Улье в настоящее время.

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

Ответ 8

В ответах есть много методов, но нет руководства о том, когда использовать что,

  • Используйте CTAS, когда ваша цель является управляемой таблицей:

    CREATE NEW_DB.TABLE table AS SELECT * FROM OLD_DB.TABLE;
    DROP TABLE OLD_DB.TABLE;
    
  • Если вы просто хотите сделать это с помощью простого изменения имени таблицы, но расположение таблицы не изменится:

    alter table old_database.table_a rename to new_database.table_a;
    
  • Использование CREATE LIKE и INSERT:

    CREATE NEW_DB.TABLE table LIKE OLD_DB.TABLE;
    INSERT INTO TABLE new_table_name partition (partition_column) select col1, col2, col3, col4 from old_db.old_table_name where partition_column='value';
    DROP TABLE old_db.old_table_name;