Tüm Ürünler
Search
Belge Merkezi

Tablestore:Bulk import offline data

Son Güncelleme:Oct 02, 2026

Java için Tablestore SDK, birden çok satır ekleyerek, güncelleyerek veya silerek çevrimdışı verileri içe aktarır ve her satır işleminin sonucunu döndürür.

Ön koşullar

Java için Tablestore SDK bileşenini yükleyin ve istemciyi başlatın.

Açıklama

Tek bir istekte birden fazla satır işlemi göndermek için bulkImport yöntemini çağırın. Sunucu her satırı bağımsız olarak işler ve satır bazında sonuçlar döndürür; bu sayede bir satırdaki hata diğer satırlardaki işlemleri etkilemez. Bu yöntem, büyük veri senaryolarında çevrimdışı toplu aktarımlar için tasarlanmıştır.

public BulkImportResponse bulkImport(BulkImportRequest bulkImportRequest) throws TableStoreException, ClientException

Aşağıdaki örnekte, tek bir toplu istekle bulk_import_demo tablosuna beş satır eklenir ve başarılı ile başarısız olan satır sayıları yazdırılır.

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());

Parametreler

Ad

Tür

Açıklama

tableName (gerekli)

String

Tablo adı.

rowChanges (gerekli)

List<RowChange>

Satır işlemlerinin listesi. Tek bir istekte aşağıdaki işlemleri karışık olarak kullanabilirsiniz:

  • RowPutChange: Satır yazar. Yapılandırma ayrıntıları için bkz. Satır yazma.

  • RowUpdateChange: Satırı günceller. Yapılandırma ayrıntıları için bkz. Satır güncelleme.

  • RowDeleteChange: Satırı siler. Yapılandırma ayrıntıları için bkz. Satır silme.

Yanıt

Aktarım sonucu

BulkImportResponse nesnesi aşağıdaki işleme özel alanı içerir.


Ad


Tür


Açıklama


rowResults


List<BulkImportResponse.RowResult>


İstekteki rowChanges listesiyle aynı sıradaki her satır işleminin sonucu. Listeyi almak için getRowResults() yöntemini çağırın.

Satır sonucu

BulkImportResponse.rowResults[] dizisindeki her öğe BulkImportResponse.RowResult türündedir.


Ad


Tür


Açıklama


succeed


boolean


Satır işleminin başarılı olup olmadığını belirtir. Değeri almak için isSucceed() yöntemini çağırın.


error


Error


Başarısız satır işlemine ilişkin hata. İşlem başarılı olduğunda değer null olur.


index


int


İstekteki rowChanges listesindeki satır işleminin dizin numarası.

Örnekler

Tek istekte ekleme, güncelleme ve silme işlemlerini birleştirme

Ekleme, güncelleme ve silme işlemlerini birlikte göndermek için tek bir BulkImportRequest nesnesi kullanın.

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());

Başarısız satırları yeniden deneme

Başarısız satırlardan yeni bir istek oluşturmak için createRequestForRetry(failedRows) yöntemini kullanın. Yeniden deneme isteği yalnızca başarısız satırları içerdiğinden, daha önce başarılı olan satırlar tekrar uygulanmaz.

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());
}