【发布时间】:2016-03-05 01:17:07
【问题描述】:
我们有一个共同的需求(数据迁移)批量修改用户id列等数据(将用户id 001更改为002,将用户id 003更改为004)。但是表 1 中的用户 id 字段不是主键(除了 select * from table 之外,我们无法获取所有要更新的行),而表 2 中的用户 id 字段是主键(这种情况我们可以处理)。因此,我们无法使用 where cause 为所有表选择所有数据。
那么如何满足这个要求呢?
我只是想出了两种方法:
(1) select * from table with fetch size setting。然后更新它。 // 方法对吗? (2) 使用复制命令到一个CVS,然后修改它并再次导入。 // 性能很慢?
这些方法是否可以在生产中使用(具有 > 百万条记录。)或者是否有任何其他标准更好的方法来满足这个要求?稳定加载器?猪?
也许修改一列所有存在的表是常见的要求,因此可能存在于标准解决方案中。
无论我们最后选择哪种方法,在迁移数据时,在过去的旧数据迁移期间如何解决新的数据迁移问题。 换句话说,如何解决增加的数据迁移问题?
期待你的重播
表1 userid(pk) 姓名性别
表2 电话号码(pk)用户ID
【问题讨论】:
-
你能用两个表上的
DESC语句的结果更新你的答案吗?听起来您可能难以将关系数据迁移到非关系数据库中,因此查看两个表之间的列/关系会很有帮助。
标签: cassandra