表格存储的 SDK 提供了 CreateTable、ListTable、DeleteTable、UpdateTable 和 DescribeTable 等表级别的操作接口。
创建表(CreateTable)
根据给定的表的结构信息创建相应的表。
创建表格存储的表时必须指定表的主键。主键包含 1~4 个主键列,每一个主键列都有名字和类型。
接口// 说明:根据表信息创建表。
// request 是CreateTableRequest类的实例,它包含tablemeta 和 TableOption 以及 ReservedThroughput
// 请参考TableMeta类的文档。当创建了一个表之后,通常要等待1分钟时间使partition load
// 完成,才能进行各种操作。
// 返回:CreateTableResponse。
CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)
[backcolor=transparent]说明:表格存储的表在被创建之后需要几秒钟进行加载,创建成功后需要等待几秒钟后再做其他操作。
//创建主键列的schema,包括PK的个数,名称和类型
//第一个PK列为整数,名称是pk0,这个同时也是分片列
//第二个PK列为整数,名称是pk1
tableMeta := new(tablestore.TableMeta)
tableMeta.TableName = tableName
tableMeta.AddPrimaryKeyColumn("pk0", tablestore.PrimaryKeyType_INTEGER)
tableMeta.AddPrimaryKeyColumn("pk1", tablestore.PrimaryKeyType_STRING)
tableOption := new(tablestore.TableOption)
tableOption.TimeToAlive = -1
tableOption.MaxVersion = 3
reservedThroughput := new(tablestore.ReservedThroughput)
reservedThroughput.Readcap = 0
reservedThroughput.Writecap = 0
createtableRequest.TableMeta = tableMeta
createtableRequest.TableOption = tableOption
createtableRequest.ReservedThroughput = reservedThroughput
response, err = client.CreateTable(createtableRequest)
if (err != nil) {
fmt.Println("Failed to create table with error:", err)
} else {
fmt.Println("Create table finished")
}
[backcolor=transparent]说明:详细代码可在 createTable@GitHub 获取。
// 列出所有的表,如果操作成功,将返回所有表的名称。
ListTable() (*ListTableResponse, error)
tables, err := client.ListTable()
if err != nil {
fmt.Println("Failed to list table")
} else {
fmt.Println("List table result is")
for _, table := range (tables.TableNames) {
fmt.Println("TableName: ", table)
}
}
[backcolor=transparent]说明:详细代码可在 listTable@GitHub 获取。
// 更改表的tableoptions和reservedthroughput
UpdateTable(request *UpdateTableRequest) (*UpdateTableResponse, error)
updateTableReq := new(tablestore.UpdateTableRequest)
updateTableReq.TableName = tableName
updateTableReq.TableOption = new(tablestore.TableOption)
updateTableReq.TableOption.TimeToAlive = -1
updateTableReq.TableOption.MaxVersion = 5
_, err := client.UpdateTable(updateTableReq)
if (err != nil) {
fmt.Println("failed to update table with error:", err)
} else {
fmt.Println("update finished")
}
[backcolor=transparent]说明:详细代码可在 updateTable@GitHub 获取。
// 通过表名查询表描述信息
DescribeTable(request *DescribeTableRequest) (*DescribeTableResponse, error)
describeTableReq := new(tablestore.DescribeTableRequest)
describeTableReq.TableName = tableName
describ, err := client.DescribeTable(describeTableReq)
if err != nil {
fmt.Println("failed to update table with error:", err)
} else {
fmt.Println("DescribeTableSample finished. Table meta:", describ.TableOption.MaxVersion, describ.TableOption.TimeToAlive)
}
[backcolor=transparent]说明:详细代码可在 describeTable@GitHub 获取。
deleteReq := new(tablestore.DeleteTableRequest)
deleteReq.TableName = tableName
_, err := client.DeleteTable(deleteReq)
if (err != nil) {
fmt.Println("Failed to delete table with error:", err)
} else {
fmt.Println("Delete table finished")
}
[backcolor=transparent]说明:详细代码可在 deleteTable@GitHub 获取。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。