支持更新,插入或删除

时间:2017-02-16 17:28:33

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

Spanner API是否支持DML语句?例如,支持以下内容:

UPDATE SET foo="bar" WHERE foo="baz"

3 个答案:

答案 0 :(得分:3)

更新为2018年10月中旬:

Cloud Spanner现在确实使用直接DML支持INSERTUPDATEDELETE

有关更改的博客文章: https://cloud.google.com/blog/products/databases/develop-and-deploy-apps-more-easily-with-cloud-spanner-and-cloud-bigtable-updates

文档: https://cloud.google.com/spanner/docs/dml-tasks

答案 1 :(得分:1)

Cloud Spanner不支持INSERT / UPDATE / DELETE DML操作,但是使用read-write transactions可以达到相同的效果。数据的所有突变都必须通过事务提交方法(在REST或gRPC中),它接受Mutation个对象。

在你的例子中,你会

  1. 启动读写事务并执行SQL语句,例如:SELECT <key> from MyTable where foo="baz"
  2. 然后commit该事务并包含Mutation个对象的列表(您从选择中返回的每一行一个),并使用update属性将所有值设置为{{ 1}}。

答案 2 :(得分:1)

Google Cloud Spanner本身不支持此功能,但此JDBC驱动程序https://github.com/olavloite/spanner-jdbc通过解析提供的SQL并调用Google Cloud Spanner的读/写API来支持它。查看CloudSpannerPreparedStatement中的代码,了解它是如何完成的。驱动程序依赖于https://github.com/JSQLParser/JSqlParser提供的SQL解析。

从版本0.16及更高版本的上述JDBC驱动程序开始,支持在多行上运行的完整DML语句。您可以将驱动程序与SQuirreL或DBVisualizer等工具结合使用,以便将语句发送到Cloud Spanner。

在这里查看一些示例:http://www.googlecloudspanner.com/2018/02/data-manipulation-language-with-google.html