开发者社区 问答 正文

Java-SDK的表操作

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

创建表(CreateTable)


根据给定的表结构信息创建相应的表。
创建表格存储的表时必须指定表的主键。主键包含1~4个主键列,每一个主键列都有名字和类型。

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




提示:

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


示例


创建一个有 2 个主键列,预留读/写吞吐量为 (0,0) 的表。 //创建主键列的schema,包括PK的个数,名称和类型
        //第一个PK列为整数,名称是pk0,这个同时也是分片列
        //第二个PK列为整数,名称是pk1
        TableMeta tableMeta = new TableMeta("SampleTable");
        tableMeta.addPrimaryKeyColumn("pk0", PrimaryKeyType.INTEGER);
        tableMeta.addPrimaryKeyColumn("pk1", PrimaryKeyType.INTEGER);
        // 将该表的读写CU都设置为0
        CapacityUnit capacityUnit = new CapacityUnit(0, 0);
        try
        {
            // 构造CreateTableRequest对象
            CreateTableRequest request = new CreateTableRequest();
            request.setTableMeta(tableMeta);
            request.setReservedThroughput(capacityUnit);
            // 调用client的createTable接口,如果没有抛出异常,则说明成功,否则失败
            client.createTable(request);
            System.out.println("Create table succeeded.");
        } catch (ClientException ex) {
            // 如果抛出客户端异常,则说明参数等有误
            System.out.println("Create table failed.");
        } catch (OTSException ex) {
            // 如果抛出服务器端异常,则说明请求失败
            System.out.println("Create table failed.");
        }


提示:

列出表名称(ListTable)


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

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





示例


获取实例下的所有表名。 try
    {
        // 调用listTable接口
        ListTableResult result = client.listTable();
        // 打印table名称
        for (String tableName : result.getTableNames()) {
            System.out.println(tableName);
        }
        System.out.println("List table succeeded.");
    } catch (ClientException ex) {
        // 如果抛出客户端异常,则说明参数等有误
        System.out.println("List table failed.");
    } catch (OTSException ex) {
        // 如果抛出服务器端异常,则说明请求失败
        System.out.println("List table failed.");
    }


提示:

更新表(UpdateTable)


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

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





示例


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


提示:

查询表描述信息(DescribeTable)


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

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





示例


获取表的描述信息。 try
    {
        // 构造一个请求对象
        DescribeTableRequest request = new DescribeTableRequest();
        request.setTableName("SampleTable");
        DescribeTableResult result = client.describeTable(request);
        // 打印SampleTable的描述信息
        TableMeta tableMeta = result.getTableMeta();
        System.out.println("Table name:" + tableMeta.getTableName());
        System.out.println("Table Pk:");
        for (String keyName : tableMeta.getPrimaryKey().keySet()) {
            System.out.println(keyName + " : " + tableMeta.getPrimaryKey().get(keyName));
        }
        ReservedThroughputDetails reservedThroughputDetails = result.getReservedThroughputDetails();
        System.out.println("Table read CU:"
                + reservedThroughputDetails.getCapacityUnit().getReadCapacityUnit());
        System.out.println("Table write CU:"
                + reservedThroughputDetails.getCapacityUnit().getWriteCapacityUnit());
    } catch (ClientException ex) {
        // 如果抛出客户端异常,则说明参数等有误
        System.out.println("Descibe table failed.");
    } catch (OTSException ex) {
        // 如果抛出服务器端异常,则说明请求失败
        System.out.println("Describe row failed.");
    }


提示:

删除表(DeleteTable)


删除本实例下指定的表。

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





示例


删除表。 DeleteTableRequest request = new DeleteTableRequest();
    request.setTableName("SampleTable");
    try
    {
        // 删除表
        client.deleteTable(request);
        // 如果没有抛出异常,则说明删除成功
        System.out.println("Delete table succeeded.");
    } catch (ClientException ex) {
        // 如果抛出客户端异常,则说明参数等有误
        System.out.println("Delete table failed.");
    } catch (OTSException ex) {
        // 如果抛出服务器端异常,则说明请求失败
        System.out.println("Delete table failed.");
    }


提示:

展开
收起
云栖大讲堂 2017-10-26 09:50:35 2158 分享 版权
0 条回答
写回答
取消 提交回答