Cloud Spanner是否支持TRUNCATE TABLE命令?

时间:2017-04-06 22:10:35

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

我想清除表格中的所有值。它有一些二级索引。我尝试通过与Mutation.delete("MyTable", KeySet.all())进行交易来实现此目的(请参阅文档here)。但是我收到了一个错误:

  
    

错误:INVALID_ARGUMENT:io.grpc.StatusRuntimeException:INVALID_ARGUMENT:事务包含太多突变。

  

如何有效清除表格内容?

1 个答案:

答案 0 :(得分:2)

Cloud Spanner不支持此类截断命令。如果您的表没有二级索引,那么您可以在上面指定的Delete中指定KeySet.all(),但如果您的表具有二级索引并且很大,则可能会失败。

执行所需操作的最佳方法是发出updateDdl RPC,包括以下语句:

1)对于MyTable上的每个二级索引,请包含相应的DROP INDEX语句

2)DROP TABLE MyTable

3)如有必要,分别通过CREATE TABLECREATE INDEX语句重新创建表和索引。

请注意,允许并鼓励您在单个updateDdl RPC 中包含所有这些语句。这样做的好处是它可以为您提供原子("全有或全无")语义。