【问题标题】:Does the Spanner Client support bulk inserts?Spanner 客户端是否支持批量插入?
【发布时间】:2021-12-03 13:05:13
【问题描述】:

Google 的 Spanner 支持 SQL“批量”插入,例如来自doco

插入歌手(SingerId、FirstName、LastName) 值(1,“马克”,“理查兹”), (2,“卡特琳娜”,“史密斯”), (3, '爱丽丝', 'Trentor');

但是,我在 Go 客户端中找不到对此的任何支持。 Go Client "Statement" 类型支持单行插入,我使用 BatchUpdate() 函数执行了一批单行插入,但我找不到任何对批量插入的支持。

Spanner 客户端是否支持批量插入?

【问题讨论】:

    标签: google-cloud-spanner


    【解决方案1】:

    是的,您可以通过多种方式做到这一点:

    1. 自己提到的那个:使用BatchUpdate方法来执行一组单独的INSERT语句。一个example can be found here
    2. 您可以通过使用插入多行的 SQL 字符串调用 Update 方法来执行插入多行的 INSERT 语句。一个example can be found here
    3. 插入大量行的最有效的方法是使用mutations而不是 DML。使用Apply 方法插入(插入)突变的集合。一个example can be found here

    【讨论】:

    • 谢谢。因为我必须在当前实现选项 2 中使用 SQL 是最好的 - 虽然我一直在寻找批量插入的客户端实现,而不是简单地用 SQL 编写它,因为可能会有小的性能损失 - 但它会起作用。选项 1 实际上不是批量插入,因为它使用单独的插入语句,这些语句必须全部解析,但不完全假定 Spanner 共享解析的 SQL。尽管如此,Spanner 还是非常快的。正如您所说,最好的解决方案是使用突变——我需要硬着头皮在突变而不是 SQL 中实现一些部分。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 2021-02-08
    • 2012-07-23
    相关资源
    最近更新 更多