sql - 从redshift删除重复的行

标签 sql amazon-redshift sql-delete

我正在尝试删除redshift表中的一些重复数据。

以下是我的查询:

With duplicates
As
(Select *, ROW_NUMBER() Over (PARTITION by record_indicator Order by record_indicator) as Duplicate From table_name)
delete from duplicates
Where Duplicate > 1 ;

此查询给我一个错误。

Amazon Invalid operation: syntax error at or near "delete";



不确定问题是什么,因为with子句的语法似乎正确。
有人遇到过这种情况吗?

最佳答案

Redshift就是它的本质(任何列都没有唯一的强制性),Ziggy的第三个选项可能是最好的。一旦我们决定采用临时表路由,就可以更有效地整体交换内容。删除和插入在Redshift中很昂贵。

begin;
create table table_name_new as select distinct * from table_name;
alter table table_name rename to table_name_old;
alter table table_name_new rename to table_name;
drop table table_name_old;
commit;

如果空间不是问题,则可以将旧表保留一段时间,然后使用此处介绍的其他方法来验证原始记帐重复项中的行数是否与新表中的行数匹配。

如果您要对此类表进行恒定加载,则需要在此过程中暂停该过程。

如果重复项的数量只占大型表的一小部分,则可能要尝试将重复项的不同记录复制到临时表中,然后从原始文件中删除所有与临时表联接的记录。然后将tempt表的append恢复为原始。确保在原始表之后vacuum(无论如何,您应该按计划对大型表执行此操作)。

关于sql - 从redshift删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37582261/

相关文章:

MySQL - 删除有条件的行

sql - 是否可以为表中的所有列生成哈希值?

sql - 从 Select 语句到 Delete

c# - 将 Insert into select 翻译成 Entity Framework 6

postgresql - 使用 redshift 插入行后获取主键

amazon-web-services - 如何在 AWS 上对 S3 数据运行删除和插入查询

GoLang 复制命令准备好的语句不工作

MySQL重复具有不同ID的行

sql - 在插入第三个表之前,如何使用触发器从两个表中获取日期?

php - 使用 PHP 获取 MYSQL 数据库表中的最后一个条目