Мне нужно переместить таблицу улья из одной базы данных в другую. Как я могу это сделать?
Перенос таблицы улья из одной базы данных в другую
Ответ 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;