Using API to delete multiple rows
You can use the MultiDeleteRequest
API and delete
more than one row from a NoSQL table.
You can use MultiDeleteRequest
to delete multiple rows from a
table in an atomic operation. The key used may be partial but must contain
all of the fields that are in the shard key. A range may be specified to
delete a range of keys. As this operation can exceed the maximum amount of
data that can be modified in a single operation, a continuation key can be
used to continue the operation.
If a table's primary key is <YYYYMM,
timestamp> and the its shard key is the YYYYMM, then all
records that hit in the same month would be in same shard.
It is possible to delete a range of timestamp values for a
specific month using MultiDeleteRequest
class.
See Oracle NoSQL Java SDK API Reference for more details on the various classes and methods.
//Delete multiple rows from the table
private static void delMulRows(NoSQLHandle handle,int pinval) throws Exception {
MapValue key = new MapValue().put("pin", 1234567);
MultiDeleteRequest multiDelRequest = new MultiDeleteRequest()
.setKey(key)
.setTableName(tableName);
MultiDeleteResult mRes = handle.multiDelete(multiDelRequest);
System.out.println("MultiDelete result = " + mRes);
}
/*delete multiple rows using shard key*/
delMulRows(handle,1234567);
Note:
Oracle NoSQL Database supports user-defined row metadata. You can annotate actual row data with additional information in a JSON string using thesetRowMetadata()
method. To understand more about the row metadata when you
delete multiple rows, see Using row metadata in Write Operations.
You can use
borneo.MultiDeleteRequest
class to
perform multiple deletes in a single atomic operation.
See Oracle NoSQL Python SDK API Reference for more details on the various classes and methods.
#delete multiple rows
def multirow_delete(handle,table_name,pinval):
request = MultiDeleteRequest().set_table_name(table_name).set_key({'pin': pinval})
result = handle.multi_delete(request)
)
/*delete multiple rows using shard key*/
multirow_delete(handle,'examplesAddress',1234567)
You can use MultiDelete
method to
delete multiple rows from a table in a single atomic
operation.
See Oracle NoSQL Go SDK API Reference for more details on the various classes and methods.
//delete multiple rows
func delMulRows(client *nosqldb.Client, err error, tableName string,pinval int)(){
shardKey := &types.MapValue{}
shardKey.Put("pin", pinval)
multiDelReq := &nosqldb.MultiDeleteRequest{
TableName: tableName,
Key: shardKey,
}
multiDelRes, err := client.MultiDelete(multiDelReq)
if err != nil {
fmt.Printf("failed to delete multiple rows: %v", err)
return
}
fmt.Printf("MultiDelete result=%v\n", multiDelRes)
}
/*delete multiple rows using shard key*/
delMulRows(client, err,tableName,1234567)
You can delete multiple rows having the same shard
key in a single atomic operation using the
deleteRange
method.
//deletes multiple rows
async function mulRowDel(handle,pinval){
try {
/* Unconditional delete, should succeed.*/
var result = await handle.deleteRange(TABLE_NAME, { pin: pinval });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
/*delete multiple rows using shard key*/
await mulRowDel(handle,1234567);
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
//deletes multiple rows
async function mulRowDel(handle: NoSQLClient,pinVal: Integer){
try {
/* Unconditional delete, should succeed.*/
var result = await handle.deleteRange<StreamInt>(TABLE_NAME, { pin: pinval });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
/*delete multiple rows using shard key*/
await mulRowDel(handle,1234567);
You can delete multiple rows having the same shard
key in a single atomic operation using
DeleteRangeAsync
method.
//delete multiple rows
private static async Task mulDelRows(NoSQLClient client,int pinval){
var parKey = new MapValue {["pin"] = pinval};
var options = new DeleteRangeOptions();
do
{
var result = await client.DeleteRangeAsync(TableName,parKey,options);
Console.WriteLine($"Deleted {result.DeletedCount} row(s)");
options.ContinuationKey = result.ContinuationKey;
} while(options.ContinuationKey != null);
}
/*delete multiple rows using shard key*/
await mulDelRows(client,1234567);