批量更新一百万行

时间:2017-04-03 17:53:34

标签: google-cloud-platform google-cloud-spanner

假设表中有一百万行。我想将列中的标志从true翻转为false。如何使用单个语句在扳手中执行此操作?

也就是说,我想实现以下DML语句。

更新mytable set myflag = true,其中1 = 1;

2 个答案:

答案 0 :(得分:2)

Cloud Spanner目前不支持DML,但我们正在开发一个允许您进行批量突变的Dataflow连接器(Apache Beam)。

答案 1 :(得分:1)

您可以将this open source JDBC driver与标准JDBC工具结合使用,例如SQuirreLSQL Workbench。在这里查看有关如何使用这些工具的驱动程序的简短教程:http://www.googlecloudspanner.com/2017/10/using-standard-database-tools-with.html

JDBC驱动程序支持DML和DDL语句,因此该语句应该是开箱即用的:

Update mytable set myflag=true

支持在大量行上运行的DML语句,但Cloud Spanner的基础事务配额继续适用(在一个事务中最多20,000个突变)。您可以通过设置AllowExtendedMode = true连接属性来绕过此(请参阅驱动程序的Wiki页面)。这会将大量更新分成几个较小的更新,并在其自己的事务中执行其中的每个更新。您也可以通过将更新语句分成几个不同的部分来自行完成批处理。