全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
表格存储

表操作

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

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

创建表(CreateTable)

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

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

接口

  1. /**
  2. * 创建表(Table)。
  3. *
  4. * @param createTableRequest 执行CreateTable操作所需参数的封装。
  5. * @return CreateTable操作的响应内容。
  6. * @throws OTSException OTS访问返回错误消息
  7. * @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
  8. */
  9. public CreateTableResult createTable(CreateTableRequest createTableRequest)
  10. throws OTSException, ClientException;

提示:

  • 表格存储的表在被创建之后需要几秒钟进行加载,在此期间对该表的读/写数据操作均会失败。

示例

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

  1. //创建主键列的schema,包括PK的个数,名称和类型
  2. //第一个PK列为整数,名称是pk0,这个同时也是分片列
  3. //第二个PK列为整数,名称是pk1
  4. TableMeta tableMeta = new TableMeta("SampleTable");
  5. tableMeta.addPrimaryKeyColumn("pk0", PrimaryKeyType.INTEGER);
  6. tableMeta.addPrimaryKeyColumn("pk1", PrimaryKeyType.INTEGER);
  7. // 将该表的读写CU都设置为0
  8. CapacityUnit capacityUnit = new CapacityUnit(0, 0);
  9. try
  10. {
  11. // 构造CreateTableRequest对象
  12. CreateTableRequest request = new CreateTableRequest();
  13. request.setTableMeta(tableMeta);
  14. request.setReservedThroughput(capacityUnit);
  15. // 调用client的createTable接口,如果没有抛出异常,则说明成功,否则失败
  16. client.createTable(request);
  17. System.out.println("Create table succeeded.");
  18. } catch (ClientException ex) {
  19. // 如果抛出客户端异常,则说明参数等有误
  20. System.out.println("Create table failed.");
  21. } catch (OTSException ex) {
  22. // 如果抛出服务器端异常,则说明请求失败
  23. System.out.println("Create table failed.");
  24. }

提示:

列出表名称(ListTable)

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

接口

  1. /**
  2. * 返回表(Table)名的列表。
  3. *
  4. * @return ListTable 操作的响应内容。
  5. * @throws OTSException OTS访问返回错误消息
  6. * @throws ClientException 请求的返回结果无效,或由于网络原因请求失败,或访问超时。
  7. */
  8. public ListTableResult listTable() throws OTSException, ClientException;

示例

获取实例下的所有表名。

  1. try
  2. {
  3. // 调用listTable接口
  4. ListTableResult result = client.listTable();
  5. // 打印table名称
  6. for (String tableName : result.getTableNames()) {
  7. System.out.println(tableName);
  8. }
  9. System.out.println("List table succeeded.");
  10. } catch (ClientException ex) {
  11. // 如果抛出客户端异常,则说明参数等有误
  12. System.out.println("List table failed.");
  13. } catch (OTSException ex) {
  14. // 如果抛出服务器端异常,则说明请求失败
  15. System.out.println("List table failed.");
  16. }

提示:

更新表(UpdateTable)

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

接口

  1. /**
  2. * 更新表的读或写CapacityUnit。
  3. *
  4. * @param updateTableRequest 执行UpdateTable操作所需参数的封装。
  5. * @return UpdateTable 操作的响应内容。
  6. * @throws OTSException OTS访问返回错误消息
  7. * @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
  8. */
  9. public UpdateTableResult updateTable(UpdateTableRequest updateTableRequest)
  10. throws OTSException, ClientException;

示例

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

  1. // 设定新的预留读吞吐量为 1,写吞吐量为 2
  2. ReservedThroughputChange cuChange = new ReservedThroughputChange();
  3. // 若想单独调整写 CU,则无须设置读 CU
  4. cuChange.setReadCapacityUnit(1);
  5. // 若想单独调整读 CU,则无须设置写 CU
  6. cuChange.setWriteCapacityUnit(2);
  7. // 构造 UpdateTableRequest 对象
  8. UpdateTableRequest request = new UpdateTableRequest();
  9. request.setTableName("SampleTable");
  10. equest.setReservedThroughputChange(reservedThroughput);
  11. try
  12. {
  13. // 调用接口更新表的预留读写吞吐量
  14. client.updateTable(request);
  15. // 没有抛出异常,则说明执行成功
  16. System.out.println("Update table succeeded.");
  17. } catch (ClientException ex) {
  18. // 如果抛出客户端异常,则说明参数等有误
  19. System.out.println("Update table failed.");
  20. } catch (OTSException ex) {
  21. // 如果抛出服务器端异常,则说明请求失败
  22. System.out.println("Update table failed.");
  23. }

提示:

查询表描述信息(DescribeTable)

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

接口

  1. /**
  2. * 返回表(Table)的结构信息。
  3. *
  4. * @param describeTableRequest 执行DescribeTable操作所需参数的封装。
  5. * @return DescribeTable 操作的响应内容。
  6. * @throws OTSException OTS访问返回错误消息
  7. * @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
  8. */
  9. public DescribeTableResult describeTable(DescribeTableRequest describeTableRequest) throws OTSException, ClientException;

示例

获取表的描述信息。

  1. try
  2. {
  3. // 构造一个请求对象
  4. DescribeTableRequest request = new DescribeTableRequest();
  5. request.setTableName("SampleTable");
  6. DescribeTableResult result = client.describeTable(request);
  7. // 打印SampleTable的描述信息
  8. TableMeta tableMeta = result.getTableMeta();
  9. System.out.println("Table name:" + tableMeta.getTableName());
  10. System.out.println("Table Pk:");
  11. for (String keyName : tableMeta.getPrimaryKey().keySet()) {
  12. System.out.println(keyName + " : " + tableMeta.getPrimaryKey().get(keyName));
  13. }
  14. ReservedThroughputDetails reservedThroughputDetails = result.getReservedThroughputDetails();
  15. System.out.println("Table read CU:"
  16. + reservedThroughputDetails.getCapacityUnit().getReadCapacityUnit());
  17. System.out.println("Table write CU:"
  18. + reservedThroughputDetails.getCapacityUnit().getWriteCapacityUnit());
  19. } catch (ClientException ex) {
  20. // 如果抛出客户端异常,则说明参数等有误
  21. System.out.println("Descibe table failed.");
  22. } catch (OTSException ex) {
  23. // 如果抛出服务器端异常,则说明请求失败
  24. System.out.println("Describe row failed.");
  25. }

提示:

删除表(DeleteTable)

删除本实例下指定的表。

接口

  1. /**
  2. * 删除表(Table)。
  3. *
  4. * @param deleteTableRequest 执行DeleteTable操作所需参数的封装。
  5. * @return DeleteTable 操作的响应内容。
  6. * @throws OTSException OTS访问返回错误消息
  7. * @throws ClientException 请求的返回结果无效, 或由于网络原因请求失败, 或访问超时。
  8. */
  9. public DeleteTableResult deleteTable(DeleteTableRequest deleteTableRequest)
  10. throws OTSException, ClientException;

示例

删除表。

  1. DeleteTableRequest request = new DeleteTableRequest();
  2. request.setTableName("SampleTable");
  3. try
  4. {
  5. // 删除表
  6. client.deleteTable(request);
  7. // 如果没有抛出异常,则说明删除成功
  8. System.out.println("Delete table succeeded.");
  9. } catch (ClientException ex) {
  10. // 如果抛出客户端异常,则说明参数等有误
  11. System.out.println("Delete table failed.");
  12. } catch (OTSException ex) {
  13. // 如果抛出服务器端异常,则说明请求失败
  14. System.out.println("Delete table failed.");
  15. }

提示:

本文导读目录