web-dev-qa-db-fra.com

Comment copier toute la table Hive d'une base de données vers une autre base de données

J'ai db par défaut dans la table Hive qui contient 80 tables.
J'ai créé une base de données supplémentaire et je souhaite copier toutes les tables de la base de données par défaut vers de nouvelles bases de données.

Existe-t-il un moyen de copier d'une base de données vers une autre base de données, sans créer de table individuelle.

S'il vous plaît laissez-moi savoir si une solution .. Merci d'avance

19
Aman

Je peux penser à quelques options.

  1. Utilisez CTAS.

    CREATE TABLE NEWDB.NEW_TABLE1 AS select * from OLDDB.OLD_TABLE1;
    CREATE TABLE NEWDB.NEW_TABLE2 AS select * from OLDDB.OLD_TABLE2;
    ...
    
  2. Utiliser la fonction IMPORT de Hive https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+ImportExport

J'espère que cela t'aides.

29
Venkat Ankam

créer une table externe new_db.table comme l'emplacement old_db.table '(chemin du fichier dans le fichier hdfs)';

si vous avez une partition dans la table, vous devez ajouter une partition dans new_db.table.

4
bunty

Vous pouvez approcher l'une des options suivantes:

La syntaxe ressemble à ceci: EXPORT TABLE table_or_partition TO hdfs_path; IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION [table_location]];

Quelques exemples d'instructions ressembleraient à: EXPORTER LA TABLE À 'emplacement dans hdfs';

Utilisez test_db; IMPORTER DE 'emplacement dans hdfs';

Export Import peut également être appliqué sur une base de partition: EXPORTER LA PARTITION DE TABLE (loc = "USA") vers 'location in hdfs';

Les commandes d'importation ci-dessous importent dans une table externe au lieu d'une table gérée IMPORT EXTERNAL TABLE FROM 'location in hdfs' LOCATION '/ location/of/external/table';

1
Sohil Shivani

Ce sont probablement le moyen le plus rapide et le plus simple de copier/déplacer des tables d'une base de données à une autre.

Pour déplacer la table source

Depuis la version 0.14, vous pouvez utiliser l'instruction suivante pour déplacer la table d'une base de données vers une autre dans la même métastore:

alter table old_database.table_a rename to new_database.table_a;

Les instructions ci-dessus déplaceront également les données de la table sur hdfs si table_a est une table gérée.

Pour copier la table

Vous pouvez toujours utiliser CREATE TABLE <new_db>.<new_table> AS SELECT * FROM <old_db>.<old_table>; déclarations. Mais je crois que cette méthode alternative de copie de base de données en utilisant hdfs dfs -cp puis créer des tables avec LIKE peut être un peu plus rapide si vos tables sont énormes:

hdfs dfs -cp /user/Hive/warehouse/<old_database>.db /user/Hive/warehouse/<new_database>.db

Et puis dans Hive:

CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
1
pratpor