全部產品
Search
文件中心

Tablestore:批量讀取資料

更新時間:Mar 12, 2026

本文介紹如何通過 Node.js SDK 批量讀取Table Store中的資料,支援查詢多個表的資料。

注意事項

單次批量讀取操作最多支援讀取 100 行資料。

前提條件

初始化Tablestore Client

方法說明

batchGetRow: function batchGetRow(params, callback)

params參數說明

  • tables(必選)Array:批量讀取資料資訊,包含以下參數。

    名稱

    類型

    說明

    tableName(必選)

    string

    資料表名稱。

    primaryKey(必選)

    Array

    主鍵資訊,包括主鍵列名稱和主索引值。

    • 主鍵列資料類型包括 STRING、INTEGER 和 BINARY。

    • 主鍵個數和類型必須與資料表的主鍵保持一致。

    maxVersions(可選)

    number

    最大版本數,預設值為1。

    • 如果符合查詢條件的資料版本數量超過設定的最大版本數,按從新到舊的順序返回指定版本數量的資料。

    timeRange(可選)

    object

    資料版本範圍。

    • Table Store資料表的每個屬性列可以有不同的資料版本,設定版本範圍後,僅返回版本範圍內的資料。

    columnsToGet(可選)

    Array

    指定讀取的資料列,可以是主鍵列或屬性列。

    • 不設定columnsToGet時,返回整行資料。

    • 設定columnsToGet時,如果讀取的行資料不包含任何指定的資料列,將返回 null。

    columnFilter(可選)

    TableStore.ColumnCondition

    過濾條件,詳情請參見過濾器

    • 如果同時設定columnsToGet和columnFilter,先按columnsToGet篩選合格資料行,再按columnFilter條件過濾資料。

範例程式碼

以下範例程式碼用於讀取 test_table 表中主索引值為 row1 和 row2 的兩行資料。

var table = {
    // 設定表名稱
    tableName: 'test_table',
    primaryKey: [
        // 添加第 1 行主鍵資訊
        [{ 'id': 'row1' }],
        // 添加第 2 行主鍵資訊
        [{ 'id': 'row2' }]
    ]
};
var params = {
    tables: [
        table
    ]
}

// 調用 batchGetRow 方法進行批量資料查詢
client.batchGetRow(params, function (err, data) {
    if (err) {
        console.log('Batch get row failed with error: ', err);
        return;
    }

    // 返回結果處理
    console.log('* RequestId: ', data.RequestId);
    console.log('* Rows Data: ');
    data.tables.forEach(function (rows) {
        rows.forEach(function (row) {
            if (row.isOk) {
                console.log('Succeeded Row:', row.tableName, JSON.stringify(row.primaryKey), JSON.stringify(row.attributes));
            } else {
                console.log('Failed Row:', row.tableName, row.errorMessage);
            }
        });
    });
});

您可以在批量讀取資料時參考以下範例程式碼進行參數設定。

  • 讀取多張表的資料。批量讀取支援一次讀取多張表的資料,您需要為每張表指定查詢條件。

    var table1 = {
        tableName: 'orders_small',
        primaryKey: [
            [{ 'order_id': '90fb478c-1360-11f0-a34d-00163e30a2a9' }]
        ]
    };
    
    var params = {
        tables: [
            table,
            table1
        ]
    };
  • 設定讀取的資料版本範圍,結果只返回版本範圍內的資料。

    // 設定查詢的資料版本範圍為目前時間往前一天
    table.timeRange = {
        startTime: (Date.now() - 86400 * 1000).toString(),
        endTime: Date.now().toString()
    }
  • 指定讀取的屬性列。

    table.columnsToGet = ['col2']

相關文檔

範圍讀取資料