Spanner API是否支持DML语句?例如,支持以下内容:
UPDATE SET foo="bar" WHERE foo="baz"
答案 0 :(得分:3)
更新为2018年10月中旬:
Cloud Spanner现在确实使用直接DML支持INSERT
,UPDATE
和DELETE
:
答案 1 :(得分:1)
Cloud Spanner不支持INSERT / UPDATE / DELETE DML操作,但是使用read-write transactions可以达到相同的效果。数据的所有突变都必须通过事务提交方法(在REST或gRPC中),它接受Mutation个对象。
在你的例子中,你会
SELECT <key> from MyTable where foo="baz"
。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