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
4 réponses
je peux penser à quelques options.
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; ...
utiliser la fonction Importation de la ruche https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport
Espérons que cette aide.
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.
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>;
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’;