我在包含80个表的配置元表中具有默认数据库。
我已经创建了另外一个数据库,我想将所有表从默认数据库复制到新数据库。如何将所有配置单元表从一个数据库复制到其他数据库
有什么办法可以从一个数据库复制到其他数据库,而无需创建单独的表。
请让我知道如果任何解决方案.. 预先感谢
我在包含80个表的配置元表中具有默认数据库。
我已经创建了另外一个数据库,我想将所有表从默认数据库复制到新数据库。如何将所有配置单元表从一个数据库复制到其他数据库
有什么办法可以从一个数据库复制到其他数据库,而无需创建单独的表。
请让我知道如果任何解决方案.. 预先感谢
我能想到几个选项。
CREATE TABLE NEWDB.NEW_TABLE1 AS select * from OLDDB.OLD_TABLE1;
CREATE TABLE NEWDB.NEW_TABLE2 AS select * from OLDDB.OLD_TABLE2;
...
采用进口的特性,这有助于。
创建外部表new_db.table像old_db.table位置'(hdfs文件中的文件路径)';
如果你在表中有分区,那么你必须在new_db.table中添加分区。
这些可能是将表格从一个数据库复制/移动到其他数据库的最快最简单的方法。
要将表source
由于0.14,你可以用下面的语句从一个数据库移到表到另一个在同一metastore:
alter table old_database.table_a rename to new_database.table_a;
以上陈述也将移动台关于hdfs的数据如果table_a
是托管表。
复制表
您可以随时使用CREATE TABLE <new_db>.<new_table> AS SELECT * FROM <old_db>.<old_table>;
语句。但我相信,随着LIKE
复制使用hdfs dfs -cp
数据库,然后创建表的这种交替的方法可以快一点,如果你的表是巨大的:
hdfs dfs -cp /user/hive/warehouse/<old_database>.db /user/hive/warehouse/<new_database>.db
然后在蜂巢:
CREATE DATABASE <new_database>;
CREATE TABLE <new_database>.<new_table> LIKE <old_database>.<old_table>;
这不是一个“复制”,而是一个“移动”。 – 2017-05-31 14:43:52
@ThomasDecaux我的不好。已经更新了复制的答案。谢谢。 – PratPor 2017-06-01 05:16:28
您可以进场以下选项之一:
语法如下所示: EXPORT TABLE table_or_partition TO hdfs_path; IMPORT [[EXTERNAL] TABLE table_or_partition] FROM hdfs_path [LOCATION [table_location]];
一些示例语句如下所示: 导出表'位于hdfs';
使用test_db; IMPORT FROM'location in hdfs';导出导入也可以在分区的基础上应用: EXPORT TABLE PARTITION(loc =“USA”)to'location in hdfs';
的下面导入命令进口到外部表,而不是管理的一个 引入外部TABLE FROM“位置在HDFS” LOCATION“/外部/表/位置/”;
请注意,'show databases'会提供80个需要的名称,然后可以很容易地在excel等工具中创建80行。 – 2016-01-27 15:48:39
这是好东西:) – 2016-08-05 20:10:00
第1号对我很好,除了分区不复制。任何方式来实现这一目标? – vk1011 2017-01-16 02:59:29