【问题标题】:Updating tables in greenplum database using gpload使用 gpload 更新 greenplum 数据库中的表
【发布时间】:2015-07-17 16:14:16
【问题描述】:

我在 greenplum 中有一个本地表 XYZ。我正在从其他 5 个表中的数据填充该表(表 XYZ 有很少的列和来自 5 个不同表的数据,由一些连接操作填充)。

这工作正常。但我在这里面临的问题是:

1> 我需要我的表 XYZ 有最新的数据。也就是说,如果任何新条目出现在 5 个表中(从中填充 XYZ),我的表 XYZ 应该更新。

2> 如果任何现有记录被修改,那么在这种情况下,表 XYZ 中的数据也应该被修改。 我还有一张 History_of_XYZ 表,该表包含 XYZ 的所有数据(历史)。例如:假设他们是客户 ABC 的一个条目,因为他住在美国。但现在 ABC 已经搬到了新的国家,比如说俄罗斯。然后我的历史表将包含与条目 USA 对应的数据,表 XYZ 将包含最近更新的数据,即居住在俄罗斯的客户。

所以我无法找出处理第 1 步和第 2 步的最佳方法。

考虑到所有数据都在greenplum数据库中,如何做到这一点。

我对 gpload 和其他加载选项进行了一些研究,但不确定如何进行第 1 步和第 2 步。

任何指针都会有所帮助。我对 DB 很陌生。因此,设置所有表格结构并填充表格本身对我来说是一个很大的学习曲线。

【问题讨论】:

    标签: sql database shell greenplum


    【解决方案1】:

    我猜你需要看看像 Spring XD 这样的交互式摄取工具,请参阅主题流。

    问候, 莫哈。

    【讨论】:

      【解决方案2】:

      触发器 1 和 2 的简单用例。使用插入/更新触发器。

      【讨论】:

        【解决方案3】:

        Greenplum 不支持触​​发器。要解决您的问题,您需要在所有 5 个源表中维护上次更新的时间戳。并根据 5 个源表更新的频率,安排您的程序加载(插入/更新)XYZ 表。如果每天有太多的删除和更新,那么最好按照 CTAS 操作来保持可用的磁盘空间。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多