在数据库中,我有50多个表,我想知道有没有办法一次将这些表复制到第二个数据库中?
我已经使用过这个,但运行50次以上并不是很有效率。
create table database2.table1 as select * from database1.table1;
谢谢!
答案 0 :(得分:2)
将数据从一个数据库表复制到Hive中的另一个数据库表就像将数据文件从HDFS中的现有位置复制到HDFS中的新位置。
将数据从一个数据库表复制到另一个数据库表的最佳方法是在新数据库中创建外部Hive表,并将位置值设置为例如。 LOCATION'/ user / hive / external / 并使用distcp将旧表数据文件从旧HDFS位置复制到新HDFS位置。
示例:旧数据库中的现有表:
CREATE TABLE站(编号STRING,纬度INT,经度INT,高程INT,名称STRING)行格式删除字段由','存储为文本文件;
LOAD DATA LOCAL INPATH“/home/cloudera/Desktop/Stations.csv”
现在您在新数据库中创建外部表:
CREATE EXTERNAL TABLE external_stations(数字STRING,纬度INT,经度INT,海拔INT,名称STRING)行格式删除字段终止于','LOCATION'/ user / hive / external /';
现在您只需使用将数据文件从 /user/hive/warehouse/training.db/stations / 复制到 / user / hive / external / distcp 命令。这两条路径特定于我的蜂巢位置。你可以有类似的。
通过这种方式,您可以复制任何数字的表格数据。
答案 1 :(得分:0)
一种方法是在新数据库中创建表结构,并使用distcp将数据从旧HDFS位置复制到新数据库。