batchWriteRow()
batchWriteRow(array<mixed,> $request) : array<mixed,>
写入、更新或者删除指定的多行数据。
请注意,BatchWriteRow在部分行读取失败时,会在返回的$response中表示,而不是抛出异常。请参见样例:处理BatchWriteRow的返回。
Parameters
array<mixed,> |
$request |
请求参数 |
Throws
- \Aliyun\OTS\OTSClientException
当参数检查出错或服务端返回校验出错时
- \Aliyun\OTS\OTSServerException
当OTS服务端返回错误时
Returns
array<mixed,>
— 请求返回
Examples
写入几行数据
$request = array(
'tables' => array(
array(
'table_name' => 'MyTable',
'put_rows' => array(
array( // 第一行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 1, 'PK1' => 'Zhejiang'),
'attribute_columns' => array('attr1' => 'Chandler Bing', 'attr2' => 256),
),
array( // 第二行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 2, 'PK1' => 'Jiangsu'),
'attribute_columns' => array('attr1' => 'Chandler Bing', 'attr2' => 256),
),
array( // 第三行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 3, 'PK1' => 'Guangdong'),
'attribute_columns' => array('attr1' => 'Chandler Bing', 'attr2' => 256),
),
),
),
),
);
$response = $otsClient->batchWriteRow($request);
print json_encode($response);
/* 样例输出:
{
"tables": [
{
"table_name": "MyTable",
"put_rows": [
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
},
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
},
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
}
],
"update_rows": [],
"delete_rows": []
}
]
}
*/
更新几行数据
$request = array(
'tables' => array(
array(
'table_name' => 'MyTable',
'update_rows' => array(
array( // 第一行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 1, 'PK1' => 'Zhejiang'),
// 用 attribute_columns_to_put 指定要更新或者追加的列
'attribute_columns_to_put' => array('attr1' => 'Chandler Bing', 'attr2' => 256),
),
array( // 第二行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 2, 'PK1' => 'Jiangsu'),
// 用 attribute_columns_to_delete 指定要删除的列
'attribute_columns_to_delete' => array('attr1', 'attr2'),
),
),
),
),
);
$response = $otsClient->batchWriteRow($request);
print json_encode($response);
/* 样例输出:
{
"tables": [
{
"table_name": "MyTable",
"put_rows": [],
"update_rows": [
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
},
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
}
],
"delete_rows": []
}
]
}
*/
删除几行数据
$request = array(
'tables' => array(
array(
'table_name' => 'MyTable',
'delete_rows' => array(
array( // 第一行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 1, 'PK1' => 'Zhejiang'),
),
array( // 第二行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 2, 'PK1' => 'Jiangsu'),
),
array( // 第三行
'condition' => 'IGNORE',
'primary_key' => array('PK0' => 3, 'PK1' => 'Guangdong'),
),
),
),
),
);
$response = $otsClient->batchWriteRow($request);
print json_encode($response);
/* 样例输出:
{
"tables": [
{
"table_name": "MyTable",
"put_rows": [],
"update_rows": [],
"delete_rows": [
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
},
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
},
{
"is_ok": true,
"consumed": {
"capacity_unit": {
"read": 0,
"write": 1
}
}
}
]
}
]
}
*/
处理BatchWriteRow的返回
$response = $otsClient->batchWriteRow($request);
print json_encode($response);
// 处理返回的每个表
foreach ($response['tables'] as $tableData) {
print "Handling table {$tableData['table_name']} ...\n";
// 处理这个表下的PutRow返回的结果
$putRows = $tableData['put_rows'];
foreach ($putRows as $rowData) {
if ($rowData['is_ok']) {
// 写入成功
print "Capacity Unit Consumed: {$rowData['consumed']['capacity_unit']['write']}\n";
} else {
// 处理出错
print "Error: {$rowData['error']['code']} {$rowData['error']['message']}\n";
}
}
// 处理这个表下的UpdateRow返回的结果
$updateRows = $tableData['update_rows'];
foreach ($updateRows as $rowData) {
// 像 PutRow一样处理 。。。
if ($rowData['is_ok']) {
// 写入成功
print "Capacity Unit Consumed: {$rowData['consumed']['capacity_unit']['write']}\n";
} else {
// 处理出错
print "Error: {$rowData['error']['code']} {$rowData['error']['message']}\n";
}
}
// 处理这个表下的DeleteRow返回的结果
$deleteRows = $tableData['delete_rows'];
foreach ($deleteRows as $rowData) {
if ($rowData['is_ok']) {
// 写入成功
print "Capacity Unit Consumed: {$rowData['consumed']['capacity_unit']['write']}\n";
} else {
// 处理出错
print "Error: {$rowData['error']['code']} {$rowData['error']['message']}\n";
}
}
}