Comment copier toutes les tables de ruche d'une base de données à une autre base de données

j'ai le db par défaut dans la table de Ruche qui contient 80 tables .

J'ai créé une base de données de plus et je veux copier toutes les tables de la base de données par défaut à de nouvelles bases de données.

y a-t-il un moyen de copier d'un DB à un autre DB, sans créer de table individuelle.

s'il vous Plaît laissez-moi savoir si une solution.. Merci à l'avance

17
demandé sur Sohil Shivani 2014-10-29 20:21:05

4 réponses

je peux penser à quelques options.

  1. Utilisez les CTA.

    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 Importation de la ruche https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport

Espérons que cette aide.

26
répondu Venkat Ankam 2015-06-22 05:04:13

créer une table externe new_db.table comme old_db.l'emplacement de la table '(chemin de fichier hdfs fichier)';

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

4
répondu bunty 2015-02-10 14:40:41

il s'agit probablement de la façon la plus rapide et la plus simple de copier / déplacer des tables d'un db à l'autre.

pour déplacer la table source

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

alter table old_database.table_a rename to new_database.table_a;

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

Pour copier le tableau

Vous pouvez toujours utiliser CREATE TABLE <new_db>.<new_table> AS SELECT * FROM <old_db>.<old_table>; consolidés. Mais je crois que cette méthode alternative de copier la base de données en utilisant hdfs dfs -cp et ensuite 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

puis dans la Ruche:

CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
2
répondu pratpor 2018-02-19 10:54:02

vous pouvez Vous adresser à l'une des options suivantes :

La syntaxe ressemble à ceci: Exporter la table table_or_partition vers hdfs_path; IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION [table_location]];

certains exemples de déclarations ressembleraient à: EXPORT TABLE TO 'location in hdfs';

Utiliser test_db; IMPORTER à PARTIR de l'emplacement "dans hdfs';

Export Import peut aussi être appliqué sur une base de partition: TABLE D'EXPORTATION PARTITION (loc="états-unis") à l'emplacement "dans hdfs';

l'import ci-dessous commande les importations vers une table externe au lieu d'une table gérée L'IMPORTATION de la TABLE EXTERNE DE l'emplacement dans hdfs EMPLACEMENT/emplacement/de/externe/table’;

1
répondu Sohil Shivani 2017-03-06 14:03:54