Todos os produtos
Search
Central de documentação

Tablestore:Gravar dados

Última atualização: Jun 23, 2026

Tablestore permite gravar uma única linha de dados, atualizar uma única linha de dados e gravar várias linhas de dados ao mesmo tempo chamando diferentes operações. Para gravar dados em uma tabela de dados, especifique as informações completas da chave primária e as colunas de atributo que deseja adicionar, excluir ou modificar. Para gravar dados em uma aplicação de alta concorrência, configure condições de existência de linha ou condições de coluna para atualizar dados com base nas condições especificadas.

Pré-requisitos

  • Uma instância do OTSClient foi inicializada. Para mais informações, consulte Inicializar uma instância do OTSClient.

  • Uma tabela de dados foi criada e os dados foram gravados na tabela de dados.

Gravar uma única linha de dados

Chame a operação PutRow para gravar uma linha de dados. Se a linha existir, o Tablestore exclui todas as versões de dados em todas as colunas da linha existente e grava novos dados.

Operação de API

// @param PutRowRequest    Encapsulate the parameters required to call the PutRow operation.
// @return PutRowResponse
PutRow(request *PutRowRequest) (*PutRowResponse, error)                    

Parâmetros

Parâmetro

Descrição

TableName

O nome da tabela de dados.

PrimaryKey

As informações da chave primária da linha. As informações da chave primária incluem o nome, o tipo e o valor da coluna de chave primária.

null
  • O número e os tipos das colunas de chave primária especificadas devem ser iguais ao número e aos tipos reais das colunas de chave primária na tabela.

  • Se uma coluna de chave primária for uma coluna de chave primária de incremento automático, não é necessário especificar um valor para ela. Basta definir a coluna de chave primária como uma coluna de incremento automático. Para mais informações, consulte Configurar uma coluna de chave primária de incremento automático.

Columns

As colunas de atributo da linha. Uma coluna de atributo é especificada por parâmetros na seguinte sequência: nome da coluna de atributo, valor da coluna de atributo (ColumnValue), tipo da coluna de atributo (ColumnType) e timestamp. O tipo da coluna de atributo e o timestamp são opcionais.

  • O nome da coluna de atributo é o nome da coluna, e o tipo da coluna de atributo é o tipo de dados da coluna. Para mais informações, consulte Convenções de nomenclatura e tipos de dados.

    Defina o parâmetro ColumnType como ColumnType.INTEGER para um valor INTEGER, ColumnType.STRING para uma STRING codificada em UTF-8, ColumnType.BINARY para um valor BINARY, ColumnType.BOOLEAN para um valor BOOLEAN ou ColumnType.DOUBLE para um valor DOUBLE. Se o tipo da coluna de atributo for BINARY, defina o parâmetro ColumnType como ColumnType.BINARY. Nos demais casos, deixe o parâmetro ColumnType vazio.

  • O timestamp é um número de versão de dados. Use o número de versão de dados gerado automaticamente pelo sistema ou especifique um número de versão de dados personalizado. Por padrão, se você não especificar um número de versão de dados, o sistema usa o número de versão gerado automaticamente. Para mais informações, consulte Versões de dados e TTL.

    • Por padrão, o sistema usa o timestamp UNIX atual como número de versão de dados. O timestamp segue o formato de tempo UNIX. É o número de milissegundos transcorridos desde 00:00:00 de quinta-feira, 1 de janeiro de 1970.

    • Se você especificar um número de versão, verifique se o número de versão é um timestamp de 64 bits com precisão de milissegundos e está dentro da faixa de versão válida.

Condition

A condição que pode ser configurada para chamar a operação PutRow. Configure uma condição de existência de linha ou uma condição baseada em valores de coluna. Para mais informações, consulte Configurar atualização condicional.

Exemplos

O código de exemplo a seguir demonstra como gravar uma única linha de dados:

putRowRequest := new(tablestore.PutRowRequest)
putRowChange := new(tablestore.PutRowChange)
putRowChange.TableName = tableName
putPk := new(tablestore.PrimaryKey)
putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
putPk.AddPrimaryKeyColumn("pk2", int64(2))
putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
putRowChange.PrimaryKey = putPk
putRowChange.AddColumn("col1", "col1data1")
putRowChange.AddColumn("col2", int64(3))
putRowChange.AddColumn("col3", []byte("test"))
putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
putRowRequest.PutRowChange = putRowChange
_, err := client.PutRow(putRowRequest)

if err != nil {
    fmt.Println("putrow failed with error:", err)
} else {
    fmt.Println("putrow finished")
 }                    

Para visualizar o código de exemplo detalhado, acesse PutRow@GitHub.

Atualizar uma única linha de dados

Chame a operação UpdateRow para atualizar os dados em uma linha. É possível adicionar colunas de atributo a uma linha, remover colunas de atributo de uma linha, excluir uma versão específica de dados de uma coluna de atributo ou atualizar o valor de uma coluna de atributo. Se a linha não existir, uma nova linha será inserida.

null

Se a operação UpdateRow for chamada apenas para remover colunas de uma linha e a linha não existir, nenhuma linha será inserida na tabela.

Operação de API

// Update a row of data in the table.
// @param UpdateRowRequest      Encapsulate the parameters required to call the UpdateRow operation.
// @return UpdateRowResponse    The content of the response to the UpdateRow operation.
UpdateRow(request *UpdateRowRequest) (*UpdateRowResponse, error)                    

Parâmetros

Parâmetro

Descrição

TableName

O nome da tabela de dados.

PrimaryKey

As informações da chave primária da linha. As informações da chave primária incluem o nome, o tipo e o valor da coluna de chave primária.

null

O número e os tipos das colunas de chave primária especificadas devem ser iguais ao número e aos tipos reais das colunas de chave primária na tabela.

Columns

As colunas de atributo da linha.

  • Ao adicionar ou modificar uma coluna de atributo, especifique o nome e o valor da coluna de atributo. O tipo do valor da coluna de atributo e o timestamp são opcionais.

    O nome da coluna de atributo é o nome da coluna, e o tipo do valor da coluna de atributo é o tipo de dados da coluna. Para mais informações, consulte Convenções de nomenclatura e tipos de dados.

    Um timestamp é um número de versão de dados. Use o número de versão de dados gerado automaticamente pelo sistema ou especifique um número de versão de dados personalizado. Por padrão, se você não especificar um número de versão de dados, o sistema usa o número de versão gerado automaticamente. Para mais informações, consulte Versões de dados e TTL.

    • Por padrão, o sistema usa o timestamp UNIX atual como número de versão de dados. Um timestamp UNIX representa o número de milissegundos transcorridos desde 1 de janeiro de 1970, 00:00:00 UTC.

    • Se você especificar um número de versão de dados personalizado, verifique se o número de versão é um timestamp de 64 bits com precisão de milissegundos e está dentro da faixa de versão válida.

  • Para excluir uma versão específica de dados de uma coluna de atributo, especifique apenas o nome da coluna de atributo e o timestamp.

    O timestamp é um inteiro de 64 bits em unidades de milissegundos, que especifica uma versão de dados.

  • Para remover uma coluna de atributo, especifique apenas o nome da coluna de atributo.

    null

    Após remover todas as colunas de atributo de uma linha, a linha ainda existe. Para excluir uma linha, use a operação DeleteRow.

Condition

A condição que pode ser configurada para chamar a operação UpdateRow. Configure uma condição de existência de linha ou uma condição baseada em valores de coluna. Para mais informações, consulte Configurar atualização condicional.

Exemplos

O código de exemplo a seguir demonstra como atualizar uma única linha de dados:

updateRowRequest := new(tablestore.UpdateRowRequest)
updateRowChange := new(tablestore.UpdateRowChange)
updateRowChange.TableName = tableName
updatePk := new(tablestore.PrimaryKey)
updatePk.AddPrimaryKeyColumn("pk1", "pk1value1")
updatePk.AddPrimaryKeyColumn("pk2", int64(2))
updatePk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
updateRowChange.PrimaryKey = updatePk
updateRowChange.DeleteColumn("col1")
updateRowChange.PutColumn("col2", int64(77))
updateRowChange.PutColumn("col4", "newcol3")
updateRowChange.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
updateRowRequest.UpdateRowChange = updateRowChange
_, err := client.UpdateRow(updateRowRequest)

if err != nil {
    fmt.Println("update failed with error:", err)
} else {
    fmt.Println("update row finished")
}                    

Para visualizar o código de exemplo detalhado, acesse UpdateRow@GitHub.

Gravar várias linhas de dados ao mesmo tempo

Chame a operação BatchWriteRow para gravar várias linhas de dados em uma ou mais tabelas de cada vez.

A operação BatchWriteRow consiste em várias operações PutRow, UpdateRow e DeleteRow. Ao chamar a operação BatchWriteRow, o processo de construção de uma suboperação é o mesmo do processo de chamada da operação PutRow, UpdateRow ou DeleteRow.

Ao chamar a operação BatchWriteRow, o Tablestore executa cada operação PutRow, UpdateRow ou DeleteRow separadamente e retorna a resposta de cada operação individualmente.

Observações de uso

  • Ao chamar a operação BatchWriteRow para gravar várias linhas de dados ao mesmo tempo, a gravação de algumas linhas pode falhar. Nesse caso, o Tablestore não retorna exceções. O Tablestore retorna BatchWriteRowResponse com os índices e as mensagens de erro das linhas que falharam. Portanto, ao chamar a operação BatchWriteRow, verifique os valores de retorno para determinar se todas as linhas foram gravadas. Se você não verificar os valores de retorno, as linhas cuja gravação falhou podem ser ignoradas.

    Se o servidor detectar parâmetros inválidos em algumas operações, uma mensagem de erro poderá ser retornada antes da execução das operações da solicitação.

  • A operação BatchWriteRow permite gravar até 4 MB de dados em até 200 linhas ao mesmo tempo.

Operação de API

// Add, delete, or update multiple rows of data in multiple tables.
// @param BatchWriteRowRequest             Encapsulate the parameters required to call the BatchWriteRow operation.
// @return  BatchWriteRowResponse          The content of the response to the BatchWriteRow operation.
BatchWriteRow(request *BatchWriteRowRequest) (*BatchWriteRowResponse,error)                  

Exemplos

O código de exemplo a seguir demonstra como gravar 100 linhas de dados ao mesmo tempo:

batchWriteReq := &tablestore.BatchWriteRowRequest{}
for i := 0; i < 100; i++ {
    putRowChange := new(tablestore.PutRowChange)
    putRowChange.TableName = tableName
    putPk := new(tablestore.PrimaryKey)
    putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
    putPk.AddPrimaryKeyColumn("pk2", int64(i))
    putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
    putRowChange.PrimaryKey = putPk
    putRowChange.AddColumn("col1", "fixvalue")
    putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
    batchWriteReq.AddRowChange(putRowChange)
}

response, err := client.BatchWriteRow(batchWriteReq)
if err != nil {
    fmt.Println("batch request failed with:", response)
} else {
    fmt.Println("batch write row finished")
}                   

Para visualizar o código de exemplo detalhado, acesse BatchWriteRow@GitHub.

Perguntas frequentes

Referências

  • Para atualizar dados em uma aplicação de alta concorrência com base nas condições especificadas, use o recurso de atualização condicional. Para mais informações, consulte Configurar atualização condicional.

  • Para coletar estatísticas em tempo real sobre aplicações online, como o número de visualizações de página (PVs) em diversos tópicos, use o recurso de contador atômico. Para mais informações, consulte Configurar contador atômico.

  • Para executar operações atômicas para gravar uma ou mais linhas de dados, use o recurso de transação local. Para mais informações, consulte Configurar transação local.

  • Após gravar dados em uma tabela, leia ou exclua os dados na tabela conforme seus requisitos de negócios. Para mais informações, consulte Ler dados e Excluir dados.