listar - Cómo copiar toda la tabla hive de una base de datos a otra base de datos
listar tablas en hive (4)
Tengo db por defecto en la tabla hive que contiene 80 tablas.
He creado una base de datos más y quiero copiar todas las tablas de la base de datos predeterminada a las nuevas bases de datos.
¿Hay alguna forma en que pueda copiar de One DB a Other DB, sin crear una tabla individual?
Por favor, hágame saber si hay alguna solución ... Gracias de antemano
Esta es probablemente la forma más rápida y sencilla de copiar / mover tablas de una base de datos a otra.
Para mover la source mesa
Desde 0.14, puede usar la siguiente declaración para mover la tabla de una base de datos a otra en el mismo metastore:
alter table old_database.table_a rename to new_database.table_a;
Las declaraciones anteriores también moverán los datos de la tabla en hdfs si table_a
es una tabla administrada.
Para copiar tabla
Siempre puede usar CREATE TABLE <new_db>.<new_table> AS SELECT * FROM <old_db>.<old_table>;
declaraciones Pero creo que este método alternativo para copiar la base de datos utilizando hdfs dfs -cp
y luego crear tablas con LIKE
puede ser un poco más rápido si sus tablas son enormes:
hdfs dfs -cp /user/hive/warehouse/<old_database>.db /user/hive/warehouse/<new_database>.db
Y luego en Hive:
CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
Puedes acercarte a una de las siguientes opciones:
La sintaxis se ve algo como esto: TABLA DE EXPORTACIONES table_or_partition TO hdfs_path; IMPORTAR [TABLA [EXTERNA] table_or_partition] FROM hdfs_path [LOCATION [table_location]];
Algunas declaraciones de ejemplo se verían como: TABLA DE EXPORTACIÓN A ''ubicación en hdfs'';
Utilice test_db; IMPORTAR DE ''ubicación en hdfs'';
Export Import también se puede aplicar en una partición: EXPORT TABLE PARTITION (loc = "USA") a ''location in hdfs'';
Los siguientes comandos de importación se importan a una tabla externa en lugar de a una administrada IMPORTAR TABLA EXTERNA DE ''ubicación en hdfs'' UBICACIÓN ''/ ubicación / de / external / tabla'';
Puedo pensar en un par de opciones.
Utilice CTAS.
CREATE TABLE NEWDB.NEW_TABLE1 AS select * from OLDDB.OLD_TABLE1; CREATE TABLE NEWDB.NEW_TABLE2 AS select * from OLDDB.OLD_TABLE2; ...
Utilice la función IMPORT de Hive https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport
Espero que esto ayude.
cree la tabla externa new_db.table como old_db.table location ''(ruta del archivo en el archivo hdfs)'';
Si tiene partición en la tabla, entonces tiene que agregar la partición en new_db.table.