全部产品
表格存储

表操作

更新时间:2017-06-07 13:26:11   分享:   

表格存储的 SDK 提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表级别的操作接口。

创建表(CreateTable)

根据给定的表的结构信息创建相应的表。

创建表格存储的表时必须指定表的主键。主键包含 1~4 个主键列,每一个主键列都有名字和类型。

接口

  1. /// <summary>
  2. /// 根据表信息(包含表名、主键的设计和预留读写吞吐量)创建表。
  3. /// </summary>
  4. /// <param name="request">请求参数</param>
  5. /// <returns>CreateTable的返回,这个返回实例是空的,不包含具体信息。
  6. /// </returns>
  7. public CreateTableResponse CreateTable(CreateTableRequest request);
  8. /// <summary>
  9. /// CreateTable的异步形式。
  10. /// </summary>
  11. public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request);

提示:

表格存储的表在被创建之后需要几秒钟进行加载,创建成功后需要等待几秒钟后再做其他操作。

示例

创建一个有 2 个主键列,预留读/写吞吐量为 (0,0) 的表。

  1. //创建主键列的schema,包括PK的个数,名称和类型
  2. //第一个PK列为整数,名称是pk0,这个同时也是分片列
  3. //第二个PK列为字符串,名称是pk1
  4. var primaryKeySchema = new PrimaryKeySchema();
  5. primaryKeySchema.Add("pk0", ColumnValueType.Integer);
  6. primaryKeySchema.Add("pk1", ColumnValueType.String);
  7. //通过表名和主键列的schema创建一个tableMeta
  8. var tableMeta = new TableMeta("SampleTable", primaryKeySchema);
  9. // 设定预留读吞吐量为0,预留写吞吐量为0
  10. var reservedThroughput = new CapacityUnit(0, 0);
  11. try
  12. {
  13. // 构造CreateTableRequest对象
  14. var request = new CreateTableRequest(tableMeta, reservedThroughput);
  15. // 调用client的CreateTable接口,如果没有抛出异常,则说明成功,否则失败
  16. otsClient.CreateTable(request);
  17. Console.WriteLine("Create table succeeded.");
  18. }
  19. // 处理异常
  20. catch (Exception ex)
  21. {
  22. Console.WriteLine("Create table failed, exception:{0}", ex.Message);
  23. }

提示:

详细代码:CreateTable@GitHub

列出表名称(ListTable)

获取当前实例下已创建的所有表的表名。

接口

  1. /// <summary>
  2. /// 获取当前实例下已创建的所有表的表名。
  3. /// </summary>
  4. /// <param name="request">请求参数</param>
  5. /// <returns>ListTable的返回,用来获取表名列表。</returns>
  6. public ListTableResponse ListTable(ListTableRequest request);
  7. /// <summary>
  8. /// ListTable的异步形式。
  9. /// </summary>
  10. public Task<ListTableResponse> ListTableAsync(ListTableRequest request);

示例

获取实例下的所有表名。

  1. var request = new ListTableRequest();
  2. try
  3. {
  4. var response = otsClient.ListTable(request);
  5. foreach (var tableName in response.TableNames)
  6. {
  7. Console.WriteLine("Table name:{0}", tableName);
  8. }
  9. Console.Writeline("List table succeeded.");
  10. }
  11. catch (Exception ex)
  12. {
  13. Console.WriteLine("List table failed, exception:{0}", ex.Message);
  14. }

更新表(UpdateTable)

更新指定表的预留读吞吐量或预留写吞吐量设置。

接口

  1. /// <summary>
  2. /// 更新指定表的预留读吞吐量或预留写吞吐量,新设定将于更新成功一分钟内生效。
  3. /// </summary>
  4. /// <param name="request">请求参数,包含表名以及预留读写吞吐量</param>
  5. /// <returns>包含更新后的预留读写吞吐量等信息</returns>
  6. public UpdateTableResponse UpdateTable(UpdateTableRequest request);
  7. /// <summary>
  8. /// UpdateTable的异步形式。
  9. /// </summary>
  10. public Task<UpdateTableResponse> UpdateTableAsync(UpdateTableRequest request);

示例

更新表的 CU 值为读 1,写 2。

  1. // 设定新的预留读吞吐量为1,写吞吐量为2
  2. var reservedThroughput = new CapacityUnit(1, 2);
  3. // 构造UpdateTableRequest对象
  4. var request = new UpdateTableRequest("SampleTable", reservedThroughput);
  5. try
  6. {
  7. // 调用接口更新表的预留读写吞吐量
  8. otsClient.UpdateTable(request);
  9. // 没有抛出异常,则说明执行成功
  10. Console.Writeline("Update table succeeded.");
  11. }
  12. catch (Exception ex)
  13. {
  14. // 如果抛出异常,则说莫执行失败,打印出错误信息
  15. Console.WriteLine("Update table failed, exception:{0}", ex.Message);
  16. }

提示:

详细代码:UpdateTable@GitHub

查询表描述信息(DescribeTable)

查询指定表的结构信息和预留读/写吞吐量设置信息。

接口

  1. /// <summary>
  2. /// 查询指定表的结构信息和预留读写吞吐量设置信息。
  3. /// </summary>
  4. /// <param name="request">请求参数,包含表名</param>
  5. /// <returns>包含表的结构信息和预留读写吞吐量等信息。</returns>
  6. public DescribeTableResponse DescribeTable(DescribeTableRequest request);
  7. /// <summary>
  8. /// DescribeTable的异步形式。
  9. /// </summary>
  10. public Task<DescribeTableResponse> DescribeTableAsync(DescribeTableRequest request);

示例

获取表的描述信息。

  1. try
  2. {
  3. var request = new DescribeTableRequest("SampleTable");
  4. var response = otsClient.DescribeTable(request);
  5. // 打印表的描述信息
  6. Console.Writeline("Describe table succeeded.");
  7. Console.WriteLine("LastIncreaseTime: {0}", response.ReservedThroughputDetails.LastIncreaseTime);
  8. Console.WriteLine("LastDecreaseTime: {0}", response.ReservedThroughputDetails.LastDecreaseTime);
  9. Console.WriteLine("NumberOfDecreaseToday: {0}", response.ReservedThroughputDetails.LastIncreaseTime);
  10. Console.WriteLine("ReadCapacity: {0}", response.ReservedThroughputDetails.CapacityUnit.Read);
  11. Console.WriteLine("WriteCapacity: {0}", response.ReservedThroughputDetails.CapacityUnit.Write);
  12. }
  13. catch (Exception ex)
  14. {
  15. //如果抛出异常,则说明执行失败,打印错误信息
  16. Console.WriteLine("Describe table failed, exception:{0}", ex.Message);
  17. }

提示:

详细代码:DescribeTable@GitHub

删除表(DeleteTable)

删除本实例下指定的表。

接口

  1. /// <summary>
  2. /// 根据表名删除表。
  3. /// </summary>
  4. /// <param name="request">请求参数,包含表名</param>
  5. /// <returns>DeleteTable的返回,这个返回实例是空的,不包含具体信息。
  6. /// </returns>
  7. public DeleteTableResponse DeleteTable(DeleteTableRequest request);
  8. /// <summary>
  9. /// DeleteTable的异步形式。
  10. /// </summary>
  11. public Task<DeleteTableResponse> DeleteTableAsync(DeleteTableRequest request);

示例

删除表。

  1. var request = new DeleteTableRequest("SampleTable");
  2. try
  3. {
  4. otsClient.DeleteTable(request);
  5. Console.Writeline("Delete table succeeded.");
  6. }
  7. catch (Exception ex)
  8. {
  9. Console.WriteLine("Delete table failed, exception:{0}", ex.Message);
  10. }

提示:

详细代码:DeleteTable@GitHub

本文导读目录
本文导读目录
以上内容是否对您有帮助?