用于复制的 Redshift ROLLBACK

Posted

技术标签:

【中文标题】用于复制的 Redshift ROLLBACK【英文标题】:Redshift ROLLBACK for COPY 【发布时间】:2017-02-06 04:57:53 【问题描述】:

是否可以在 Redshift 中进行 ROLLBACK COPY 操作?在附加了数据的表中,仅删除那些仅作为COPY 操作的一部分插入的行的最佳方法是什么?

【问题讨论】:

如果您在运行 copy 之前禁用自动提交是可能的 - 但 rollback 将回滚一切copy 在单个事务中完成 我认为困难在于自动提交,但是您可以将数据复制到新表,然后使用减号删除旧数据(如果您没有重复的行就可以了) @a_horse_with_no_name,你能说明这是怎么做的吗? 【参考方案1】:

copy 只能在事务中回滚。如果您提交了copy,则无法回滚。

至于您的第二个问题,这是您的应用层需要管理的东西。例子:

预处理您的文件以在您的数据中添加一个额外的标记列,例如copy-id。因此,当您需要删除copy 加载的数据时,您需要删除与copy-id 对应的所有行。 如果数据每天加载一次,您可以创建time-series tables。因此,回滚在特定日期运行的copy 涉及截断相应的表。您还可以考虑每周创建一张表,具体取决于您的用例。

【讨论】:

以上是关于用于复制的 Redshift ROLLBACK的主要内容,如果未能解决你的问题,请参考以下文章

将 Postgres RDS 模式复制到 Redshift

AWS DMS Redshift 作为目标

AWS Redshift alter append 命令不适用于插入数据

Amazon Redshift 大小增加

将 csv 文件从 s3 复制到 redshift 的问题

在两个环境之间复制表 - Redshift