阅读146 返回首页    go 汽车大全


BatchWriteRow__API 概览_API 参考_表格存储-阿里云

行为:

批量插入、修改或删除一个或多个表中的若干行数据。

BatchWriteRow 操作可视为多个 PutRow、UpdateRow、DeleteRow 操作的集合。各个操作独立执行,独立返回结果,独立计算服务能力单元。

与执行大量的单行写操作相比,使用 BatchWriteRow 操作可以有效减少请求的响应时间,提高数据的写入速率。

请求结构:

  1. message BatchWriteRowRequest {
  2. repeated TableInBatchWriteRowRequest tables = 1;
  3. }

tables:

  • 类型:repeated TableInBatchWriteRowRequest

  • 是否必要参数:是。

  • 指定了需要要执行写操作的行信息。

  • 以下情况都会返回整体错误:

    • tables 中任一表不存在。

    • tables 中包含同名的表。

    • tables 中任一表名表名不符合表名命名规范

    • tables 中任一行操作未指定主键、主键列名称不符合规范或者主键列类型不正确。

    • tables 中任一属性列名称不符合列名命名规范

    • tables 中任一行操作存在与主键列同名的属性列。

    • tables 中任一主键列或者属性列的值大小超过上限

    • tables 中任一表中存在主键完全相同的请求。

    • tables 中所有表总的行操作个数超过 200 个,或者其含有的总数据大小超过 4 M。

    • tables 中任一表内没有包含行操作,则返回 OTSParameterInvalidException 的错误。

    • tables 中任一 PutRowInBatchWriteRowRequest 包含的 Column 个数超过 1024 个。

    • tables 中任一 UpdateRowInBatchWriteRowRequest 包含的 ColumnUpdate 个数超过 1024 个。

响应消息结构:

  1. message BatchWriteRowResponse {
  2. repeated TableInBatchWriteRowResponse tables = 1;
  3. }

tables:

  • 类型:TableInBatchWriteRowResponse

  • 对应了每个 table 下各操作的响应信息,包括是否成功执行,错误码和消耗的服务能力单元。

  • 响应消息中 TableInBatchWriteRowResponse 对象的顺序与 BatchWriteRowRequest 中的 TableInBatchWriteRowRequest 对象的顺序相同;每个 TableInBatchWriteRowRequest 中 put_rows、update_rows、delete_rows 包含的 RowInBatchWriteRowResponse 对象的顺序分别与 TableInBatchWriteRowRequest 中 put_rows、update_rows、delete_rows 包含的 PutRowInBatchWriteRowRequest、UpdateRowInBatchWriteRowRequest 和 DeleteRowInBatchWriteRowRequest 对象的顺序相同。

  • 若某行读取失败,该行所对应的 RowInBatchWriteRowResponse 中 is_ok 将为 false。

注意:BatchWriteRow 操作可能会在行级别部分失败,此时返回的 HTTP 状态码仍为 200。应用程序必须对 RowInBatchWriteRowResponse 中的 error 进行检查,确认每一行的执行结果并进行相应的处理。

服务能力单元消耗:

请求示例:

  1. BatchWriteRowRequest {
  2. tables {
  3. table_name: "consume_history"
  4. put_rows {
  5. condition {
  6. row_existence: IGNORE
  7. }
  8. primary_key {
  9. name: "CardID"
  10. value {
  11. type: STRING
  12. v_string: "2007035023"
  13. }
  14. }
  15. primary_key {
  16. name: "SellerID"
  17. value {
  18. type: STRING
  19. v_string: "00022"
  20. }
  21. }
  22. primary_key {
  23. name: "DeviceID"
  24. value {
  25. type: STRING
  26. v_string: "061104"
  27. }
  28. }
  29. primary_key {
  30. name: "OrderNumber"
  31. value {
  32. type: INTEGER
  33. v_int: 142857
  34. }
  35. }
  36. attribute_columns {
  37. name: "Amount"
  38. value {
  39. type: DOUBLE
  40. v_double: 2.5
  41. }
  42. }
  43. attribute_columns {
  44. name: "Remarks"
  45. value {
  46. type: STRING
  47. v_string: "ice cream"
  48. }
  49. }
  50. }
  51. update_rows {
  52. condition {
  53. row_existence: EXPECT_EXIST
  54. }
  55. primary_key {
  56. name: "CardID"
  57. value {
  58. type: STRING
  59. v_string: "2007035023"
  60. }
  61. }
  62. primary_key {
  63. name: "SellerID"
  64. value {
  65. type: STRING
  66. v_string: "00026"
  67. }
  68. }
  69. primary_key {
  70. name: "DeviceID"
  71. value {
  72. type: STRING
  73. v_string: "065499"
  74. }
  75. }
  76. primary_key {
  77. name: "OrderNumber"
  78. value {
  79. type: INTEGER
  80. v_int: 153846
  81. }
  82. }
  83. attribute_columns {
  84. type: PUT
  85. name: "Amount"
  86. value {
  87. type: DOUBLE
  88. v_double: 1
  89. }
  90. }
  91. attribute_columns {
  92. type: DELETE
  93. name: "Remarks"
  94. }
  95. }
  96. delete_rows {
  97. condition {
  98. row_existence: IGNORE
  99. }
  100. primary_key {
  101. name: "CardID"
  102. value {
  103. type: STRING
  104. v_string: "2007035023"
  105. }
  106. }
  107. primary_key {
  108. name: "SellerID"
  109. value {
  110. type: STRING
  111. v_string: "00026"
  112. }
  113. }
  114. primary_key {
  115. name: "DeviceID"
  116. value {
  117. type: STRING
  118. v_string: "065499"
  119. }
  120. }
  121. primary_key {
  122. name: "OrderNumber"
  123. value {
  124. type: INTEGER
  125. v_int: 166666
  126. }
  127. }
  128. }
  129. }
  130. }

响应示例:

  1. tables {
  2. table_name: "consume_history"
  3. put_rows {
  4. is_ok: true
  5. consumed {
  6. capacity_unit {
  7. write: 1
  8. }
  9. }
  10. }
  11. update_rows {
  12. consumed {
  13. capacity_unit {
  14. write: 1
  15. }
  16. }
  17. }
  18. delete_rows {
  19. consumed {
  20. capacity_unit {
  21. write: 1
  22. }
  23. }
  24. }
  25. }

最后更新:2016-11-23 16:03:56

  上一篇:go BatchGetRow__API 概览_API 参考_表格存储-阿里云
  下一篇:go CreateTable__API 概览_API 参考_表格存储-阿里云