SPANNER API是否支持DML语句?例如,支持以下支持:
UPDATE SET foo="bar" WHERE foo="baz"
更新为PR 2018年10月中旬:
Cloud Spanner现在使用直接DML支持INSERT
,UPDATE
和DELETE
支持:
有关此更改的博客文章:https://cloud.google.com/blog/products/databases/develovel-and-and-deploy-apps-more-easily-with-cloud-cloud-spanner-and-spanner-and-cloud-bigtable updates
文档:https://cloud.google.com/spanner/docs/dml-tasks
云扳手不支持插入/update/delete dml操作,但是您可以使用read-write交易实现相同的效果。数据的所有突变都必须遍历接受突变对象的事务提交方法(在REST或GRPC中)。
在您的示例中,您将
- 启动读取交易并执行SQL语句,例如:
SELECT <key> from MyTable where foo="baz"
。 - 然后提交交易,并包含
Mutation
对象的列表(您从SELECT中获得的每一行)都使用update
属性将所有值设置为"bar"
。
Google Cloud Spanner本身不支持这一点,但是此JDBC驱动程序https://github.com/olavloite/spanner-jdbc确实通过解析提供的SQL并调用read/read/编写Google Cloud Spanner的API。看看CloudSpannerpreparedstatement中的代码,以了解其完成方式。驱动程序依赖于https://github.com/jsqlparser/jsqlparser提供的SQL解析。
从0.16版本和上述JDBC驱动程序的较新版本中,支持在多行上运行的完整DML statement。您可以将驱动程序与诸如松鼠或dbvisualizer之类的工具结合使用,以将语句发送给云跨度。
在此处查看一些示例:http://www.googlecloudspanner.com/2018/02/data-manipulation-language-with-google.html