将已排序的表中的所有数据插入另一个表中

时间:2014-08-20 08:34:23

标签: sql insert amazon-redshift

我在Amazon Redshift群集中有两个表,它们都使用时间戳作为排序键。第一个表是排序的,只包含从时间点1到时间点2的数据。第二个表只是临时的,但也是排序的,包含从时间点3到时间点4的数据。是否可以将第一个表中的所有数据插入到第二个表中无需在桌面上运行VACUUM。据我所知,从一个表到另一个表的正常INSERT总是需要VACUUM。

我知道如果我在预先排序的平面文件上使用COPY就可以了。但是,对于两个不需要VACUUM的预先排序的表还有解决方案吗?

2 个答案:

答案 0 :(得分:0)

选项1:

创建新表说最终表与表2相同的模式,因为您希望将表1的内容复制到表2。

请检查

select "column", type, encoding 
from pg_table_def where tablename='table2'

这将为表2的每列提供编码。为每列创建具有相同编码的新最终表。

使用查询按排序顺序加载最终表格中的数据

insert into final table ( select * from table1 order by timepoint asc)

然后开火

insert into final table ( select * from table2 order by timepoint asc )

选项2:

为timpoint1创建最终表并加载数据,然后加载timepoint2 ..继续直到以分类方式加载的时间点。

选项3:

您也可以查看Deep 复制Redshift 选项 这是链接http://docs.aws.amazon.com/redshift/latest/dg/performing-a-deep-copy.html

在进行深层复制时,首先复制表1的数据,然后加载表2

答案 1 :(得分:0)

我已经在SQL Server中尝试过此查询:

SELECT * INTO table_name FROM old_table_name