用于复制的 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的主要内容,如果未能解决你的问题,请参考以下文章