Todos os produtos
Search
Central de documentação

Tablestore:Bulk import offline data

Última atualização: Jul 09, 2026

Grave várias linhas em uma tabela com uma única solicitação usando o Tablestore SDK for Java. Esse método oferece suporte a operações de inserção, atualização e exclusão para cenários de big data offline.

Pré-requisitos

Instale o Tablestore SDK for Java e inicialize o cliente.

Descrição

public BulkImportResponse bulkImport(BulkImportRequest bulkImportRequest) throws TableStoreException, ClientException

O método bulkImport envia múltiplas operações de linha em uma única solicitação. O servidor processa cada linha independentemente e retorna resultados individuais. Essa abordagem é ideal para importações em massa offline em cenários de big data.

  • Adicione operações de linha com addRowChange(RowChange) ou addRowChanges(List<RowChange>). Ambos os métodos aceitam três subclasses de RowChange: RowPutChange, RowUpdateChange e RowDeleteChange. É possível combinar as três subclasses em uma única solicitação.

  • Chame BulkImportResponse.getResult(succeedRows, failedRows) para preencher as duas listas com os resultados de cada linha. Use isAllSucceed() para verificar se todas as linhas foram processadas com sucesso. Cada resultado é independente; portanto, uma falha em determinada linha não afeta as operações nas demais.

O exemplo a seguir insere cinco linhas na tabela bulk_import_demo em uma única solicitação em massa e imprime a quantidade de linhas com sucesso e com falha.

String tableName = "bulk_import_demo";

BulkImportRequest request = new BulkImportRequest(tableName);

List<RowChange> rowChanges = new ArrayList<RowChange>();
for (int i = 0; i < 5; i++) {
    PrimaryKey pk = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("row" + i))
            .build();
    RowPutChange put = new RowPutChange(tableName, pk);
    put.addColumn(new Column("col1", ColumnValue.fromString("v" + i)));
    rowChanges.add(put);
}
request.addRowChanges(rowChanges);

BulkImportResponse response = client.bulkImport(request);

// Retrieve per-row results into succeedRows and failedRows
List<BulkImportResponse.RowResult> succeedRows = new ArrayList<BulkImportResponse.RowResult>();
List<BulkImportResponse.RowResult> failedRows = new ArrayList<BulkImportResponse.RowResult>();
response.getResult(succeedRows, failedRows);

System.out.println("All succeed: " + response.isAllSucceed());
System.out.println("Succeed: " + succeedRows.size() + ", Failed: " + failedRows.size());

Parâmetros

Nome

Tipo

Descrição

tableName (Obrigatório)

String

Nome da tabela.

rowChanges (Obrigatório)

List<RowChange>

Lista de operações de linha. Cada elemento deve ser uma instância de RowPutChange, RowUpdateChange ou RowDeleteChange.

Exemplos

Combinar inserção, atualização e exclusão em uma única solicitação

Use um único objeto BulkImportRequest para enviar operações de inserção, atualização e exclusão simultaneamente.

String tableName = "bulk_import_demo";

BulkImportRequest request = new BulkImportRequest(tableName);

// Insert a new row
PrimaryKey pkPut = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("mixed_put"))
        .build();
RowPutChange put = new RowPutChange(tableName, pkPut);
put.addColumn(new Column("col1", ColumnValue.fromString("put_value")));
request.addRowChange(put);

// Update an existing row (append a column)
PrimaryKey pkUpdate = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("row0"))
        .build();
RowUpdateChange update = new RowUpdateChange(tableName, pkUpdate);
update.put(new Column("col2", ColumnValue.fromLong(100)));
request.addRowChange(update);

// Delete an existing row
PrimaryKey pkDelete = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("row1"))
        .build();
RowDeleteChange delete = new RowDeleteChange(tableName, pkDelete);
request.addRowChange(delete);

BulkImportResponse response = client.bulkImport(request);
System.out.println("Mixed all succeed: " + response.isAllSucceed());

Tentar novamente linhas com falha

Use createRequestForRetry(failedRows) para criar uma nova solicitação a partir das linhas que falharam. A nova tentativa contém apenas as linhas malsucedidas, evitando a reexecução daquelas já processadas corretamente.

String tableName = "bulk_import_demo";

BulkImportRequest request = new BulkImportRequest(tableName);

PrimaryKey pk = PrimaryKeyBuilder.createPrimaryKeyBuilder()
        .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("good"))
        .build();
RowPutChange row = new RowPutChange(tableName, pk);
row.addColumn(new Column("col1", ColumnValue.fromString("ok")));
request.addRowChange(row);

BulkImportResponse response = client.bulkImport(request);

List<BulkImportResponse.RowResult> succeedRows = new ArrayList<BulkImportResponse.RowResult>();
List<BulkImportResponse.RowResult> failedRows = new ArrayList<BulkImportResponse.RowResult>();
response.getResult(succeedRows, failedRows);

// If any rows failed, build a retry request that contains only the failed rows
if (!failedRows.isEmpty()) {
    BulkImportRequest retryRequest = request.createRequestForRetry(failedRows);
    BulkImportResponse retryResponse = client.bulkImport(retryRequest);
    System.out.println("Retry all succeed: " + retryResponse.isAllSucceed());
}