本文介绍如何通过 PHP SDK 范围读取表格存储中的数据。
前提条件
方法说明
public function getRange(array $request)示例代码
以下示例代码用于读取 test_table 表中主键值大于 row1 的数据。
$request = array (
'table_name' => 'test_table',
// 设置查询起始主键
'inclusive_start_primary_key' => array (
array('id', 'row1')
),
// 设置查询结束主键(返回结果不包含结束主键)
'exclusive_end_primary_key' => array (
array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX)
),
// 设置正向读取数据
'direction' => DirectionConst::CONST_FORWARD,
// 设置查询版本
'max_versions' => 1
);
try {
// 调用 getRange 方法读取行数据
$response = $client->getRange ($request);
// 返回结果处理
echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
echo "* Row Data: " . "\n";
foreach ($response['rows'] as $row) {
echo json_encode($row) . "\n";
}
} catch (Exception $e){
echo "Get Range failed.";
}单次范围扫描数据上限为 5000 行或者 4 MB,超出限制部分的数据将返回用于下一次读取的起始主键值,您可以参考以下代码进行迭代查询。
while (true) {
// 调用 getRange 方法读取行数据
$response = $client->getRange ($request);
// 返回结果处理
echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
echo "* Row Data: " . "\n";
foreach ($response['rows'] as $row) {
echo json_encode($row) . "\n";
}
if ($response['next_start_primary_key'] != null){
$request['inclusive_start_primary_key'] = $response['next_start_primary_key'];
} else {
break;
}
}您也可以在查询数据时参考示例代码进行以下设置。
设置数据读取方向。
$request = array ( 'table_name' => 'test_table', // 设置查询起始主键(反向读取数据时,起始主键要大于结束主键) 'inclusive_start_primary_key' => array ( array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX) ), // 设置查询结束主键(返回结果不包含结束主键) 'exclusive_end_primary_key' => array ( array('id', 'row1') ), // 设置反向读取数据 'direction' => DirectionConst::CONST_BACKWARD, // 设置查询版本 'max_versions' => 1 );设置读取的数据版本范围,结果只返回版本范围内的数据。
// 设置查询的数据版本范围为当前时间往前一天 $request['time_range'] = array ( 'start_time' => intval(microtime(true) * 1000) - 86400 * 1000, 'end_time' => intval(microtime(true) * 1000) );指定读取的属性列。
$request['columns_to_get'] = array('col2');设置单次返回最大行数。
$request['limit'] = 10;
相关文档
该文章对您有帮助吗?