【发布时间】:2018-02-17 11:59:48
【问题描述】:
由于 spanner 没有类似 ddl 的功能
插入 dest 为 (select * from source_table)
我们如何选择表的子集并将这些行复制到另一个表中?
我正在尝试将数据写入临时表,然后在一天结束时将数据移动到存档表。但到目前为止我能找到的唯一解决方案是,从源表中选择行并将它们写入新表。这是使用 java api 完成的,它没有 ResultSet 到 Mutation 转换器,所以我需要将表的每一列映射到新表,即使它们完全相同。
另一件事是只更新一个列数据,就像没有办法“更新 table_name set column= column-1”
再次这样做,我需要读取该行并映射每个字段以更新 Mutation,但如果有很多表,这没有用,我需要为所有表编写代码,一个 ResultSet -> Mutation 转换会很好也。
是否有任何通用的 Mutation cloner 和/或任何其他方式在表之间复制数据?
【问题讨论】:
-
每笔交易也有 20000 个突变限制。我认为这是非常低的,如果我有一个 20 列的表并想将其复制到另一个表,我只能在一个事务中复制 1000 行,这会导致这种情况下无用的事务场景(我至少有 10k 行每个密钥在一天结束时复制)。 cloud.google.com/spanner/docs/limits
-
我们正在构建 Apache Beam 连接器,因此可以使用 Cloud Dataflow 运行大规模批处理操作。您可以在此处关注状态issues.apache.org/jira/browse/BEAM-1542
标签: google-cloud-platform google-cloud-spanner