1

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

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

3 回答 3

3

2018 年 10 月中旬更新为公关:

Cloud Spanner 现在支持INSERT和使用直接 DML UPDATEDELETE

关于更改的博客文章: 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

于 2018-10-15T07:00:17.327 回答
1

Cloud Spanner 不支持 INSERT/UPDATE/DELETE DML 操作,但是您可以使用读写事务来达到相同的效果。对数据的所有更改都必须通过接受Mutation对象的事务提交方法(在 REST 或 gRPC 中) 。

在你的例子中,你会

  1. 启动读写事务并执行 SQL 语句,例如:SELECT <key> from MyTable where foo="baz".
  2. 然后提交事务并包含一个Mutation对象列表(从您的选择中返回的每一行一个)以及update将所有值设置为的属性"bar"
于 2017-02-16T17:28:32.797 回答
1

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

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

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

于 2017-03-07T10:42:35.203 回答