赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 开发参考
  5. SDK参考
  6. Java SDK
  7. 离线批量数据操作
  8. 离线批量写入数据

离线批量写入数据

  • 离线批量数据操作
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

表格存储提供了BulkImport接口用于在大数据场景下批量写入数据到数据表。当要写入数据到数据表时,您需要指定完整主键以及要增删改的属性列。

前提条件

  • 已初始化OTSClient。具体操作,请参见初始化Tablestore Client。

  • 已创建数据表。具体操作,请参见创建数据表。

参数

参数

描述

tableName

数据表名称。

rowChanges

包含多个RowChange的列表,每个RowChange代表了一行需要写入的数据。

示例

以下示例用于批量写入数据。

private static void bulkImport(SyncClient client, String start, String end){
    // 创建bulkImportRequest。
    // 设置数据表名称。
    String tableName = "<TABLE_NAME>"; 
    BulkImportRequest bulkImportRequest = new BulkImportRequest(tableName);

    // 创建rowChanges,设置要写入的数据。
    List<RowChange> rowChanges = new ArrayList<RowChange>();
    for (Integer i = Integer.valueOf(start); i <= Integer.valueOf(end); i++){
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(String.valueOf(i)));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        RowPutChange rowChange = new RowPutChange(tableName,primaryKey);
        rowChange.addColumn(new Column("DC1", ColumnValue.fromString(i.toString())));
        rowChange.addColumn(new Column("DC2", ColumnValue.fromString(i.toString())));
        rowChange.addColumn(new Column("DC3", ColumnValue.fromString(i.toString())));
        rowChanges.add(rowChange);
    }

    bulkImportRequest.addRowChanges(rowChanges);
    // 获取bulkImportResponse。
    BulkImportResponse bulkImportResponse = client.bulkImport(bulkImportRequest);
  
    List<BulkImportResponse.RowResult> succeedRows = new ArrayList<BulkImportResponse.RowResult>();
    List<BulkImportResponse.RowResult> failedRows = new ArrayList<BulkImportResponse.RowResult>();
    bulkImportResponse.getResult(succeedRows, failedRows);

    for (int i = 0; i < succeedRows.size(); i++){
        System.out.println(succeedRows.get(i).getConsumedCapacity().getCapacityDataSize().jsonize());
    }
    for (int i = 0; i < failedRows.size(); i++){
        System.out.println(failedRows.get(i).getError().getCode());
        System.out.println(failedRows.get(i).getError().getMessage());
    }
}

常见问题

  • 使用SDK时出现Validate PK size fail异常

  • 使用SDK时出现Validate PK name fail异常

  • 主键类型报错

相关文档

  • 关于API的更多信息,请参见BulkImport。

  • 关于功能接口实现的更多信息,请参见BulkImportRequest.java和BulkImportResponse.java。

  • 写入数据后,您可以根据需要读取或者删除表中数据。

    • 如果读取数据,您可以通过离线批量读取数据、基础数据读取等方式实现。更多信息,请参见离线批量读取数据和读取数据。

    • 如果需要删除数据,您可以通过调用DeleteRow或BatchWriteRow接口实现,更多信息,请参见删除数据。

  • 您还可以通过如下方式写入数据到数据表。

    • 通过PutRow、UpdateRow和BatchWriteRow接口写入数据。更多信息,请参见写入数据。

    • 通过DataWorks、DataX等工具同步其他数据源的数据到表格存储数据表中。更多信息,请参见数据集成服务。

相关文章

离线批量写入数据 2025-04-22 14:28

表格存储提供了BulkImport接口用于在大数据场景下批量写入数据到数据表。当要写入数据到数据表时,您需要指定完整主键以及要增删改的属性列。 前提条件

离线批量读取数据 2025-04-22 14:28

表格存储提供了BulkExport接口用于在大数据场景下批量读取数据表中的数据。数据写入到数据表后,您可以根据指定条件进行数据读取。 前提条件 <

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号