Usando APIs para adicionar dados de tabela
Adicione linhas à sua tabela. Quando você armazena dados em linhas da tabela, seu aplicativo pode recuperar, adicionar ou excluir informações de uma tabela facilmente.
PutRequest
/ put
para executar colocações condicionais e incondicionais para:
- Substituir qualquer linha existente. Substituir é a funcionalidade padrão.
- Bem-sucedido somente se a linha não existir. Use o método
IfAbsent
nesse caso. - Bem-sucedido somente se houver linha. Use o método
IfPresent
nesse caso. - Êxito somente se a linha existe e a versão corresponde a uma versão específica. Use o método
IfVersion
para esse caso e o métodosetMatchVersion
para especificar a versão com a qual a correspondência será feita.
A classe PutRequest
fornece o método setValueFromJson
que usa uma string JSON e a utiliza para preencher uma linha a ser inserida na tabela. A string JSON deve especificar nomes de campos que correspondam aos nomes dos campos da tabela.
private static void writeRows(NoSQLHandle handle, MapValue value)
throws Exception {
PutRequest putRequest =
new PutRequest().setValue(value).setTableName(tableName);
PutResult putResult = handle.put(putRequest);
if (putResult.getVersion() != null) {
System.out.println("Added a row to the stream_acct table");
} else {
System.out.println("Put failed");
}
}
A classe borneo.PutRequest
representa a entrada no método borneo.NoSQLHandle.put()
que é usado para inserir linhas únicas.
Você também pode adicionar dados JSON à sua tabela. No caso de uma tabela de esquema fixo, o JSON é convertido no esquema de destino. Os dados JSON podem ser inseridos diretamente em uma coluna do tipo JSON. O uso do tipo de dados JSON permite criar dados de tabela sem um esquema fixo, permitindo o uso mais flexível dos dados.
def insert_record(handle,table_name,acct_data):
request = PutRequest().set_table_name(table_name)
.set_value_from_json(acct_data)
handle.put(request)
print('Added a row to the stream_acct table')
O nosqldb.PutRequest
representa uma entrada para a função nosqldb.Put()
e é usado para inserir linhas únicas.
O valor de dados fornecido para uma linha (em PutRequest
) é um *types.MapValue
. A parte key
de cada entrada no MapValue
deve corresponder ao nome da coluna da tabela de destino e a parte value
deve ser um valor válido para a coluna. Os dados JSON também podem ser inseridos diretamente em uma coluna do tipo JSON
. O uso do tipo de dados JSON permite criar dados de tabela sem um esquema fixo, permitindo o uso mais flexível dos dados.
func insertData(client *nosqldb.Client, err error,
tableName string,value1 *types.MapValue )(){
putReq := &nosqldb.PutRequest{
TableName: tableName,
Value: value1,
}
putRes, err := client.Put(putReq)
if err != nil {
fmt.Printf("failed to put single row: %v\n", err)
return
}
fmt.Printf("Added a row to the stream_acct table\n")
}
Use o método put
para inserir uma única linha na tabela. Para obter detalhes do método, consulte a classe NoSQLClient.
/* Adding 3 records in acct_stream table */
let putResult = await handle.put(TABLE_NAME, JSON.parse(acct1));
let putResult1 = await handle.put(TABLE_NAME, JSON.parse(acct2));
let putResult2 = await handle.put(TABLE_NAME, JSON.parse(acct3));
console.log("Added rows to the stream_acct table");
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
/* Adding 3 records in acct_stream table */
let putResult = await handle.put<StreamInt>(TABLE_NAME, JSON.parse(acct1));
let putResult1 = await handle.put<StreamInt>(TABLE_NAME, JSON.parse(acct2));
let putResult2 = await handle.put<StreamInt>(TABLE_NAME, JSON.parse(acct3));
console.log("Added rows to the stream_acct table");
O método PutAsync
e os métodos relacionados PutIfAbsentAsync
, PutIfPresentAsync
e PutIfVersionAsync
são usados para inserir uma única linha na tabela ou atualizar uma única linha.
Cada um dos métodos Put
acima retorna Task<PutResult<RecordValue>>
. A instância PutResult
contém informações sobre uma operação Put
concluída, como status de sucesso (as operações de colocação condicional poderão falhar se a condição correspondente não for atendida) e o RowVersion resultante. Observe que a propriedade Sucesso do resultado indica apenas a conclusão bem-sucedida como relacionada às operações Put condicionais e é sempre verdadeira para Colocações incondicionais. Se a operação Put falhar por qualquer outro motivo, uma exceção será lançada. O uso de campos do tipo de dados JSON permite mais flexibilidade no uso de dados, pois os dados no campo JSON não têm um esquema predefinido. Para colocar valor em um campo JSON, forneça uma instância MapValue
como seu valor de campo como parte do valor da linha. Você também pode criar seu valor com base em uma string JSON via FieldValue.FromJsonString
.
private static async Task insertData(NoSQLClient client, String acctdet){
var putResult = await client.PutAsync(TableName,
FieldValue.FromJsonString(acctdet).AsMapValue);
if (putResult.ConsumedCapacity != null)
{
Console.WriteLine(" Added a row to the stream_acct table");
}
}
Tópicos Relacionados
Você pode adicionar mais de uma linha de dados em uma única operação de banco de dados usando a API MultiWrite.
Você pode executar uma sequência de operações PutRequest
associadas a uma tabela que compartilhem a mesma parte da chave de partição de suas chaves primárias como uma única operação de gravação atômica usando a classe WriteMultipleRequest
. Você também pode adicionar dados simultaneamente a uma tabela pai e filha usando a classe WriteMultipleRequest
. Essa é uma maneira eficiente de modificar atomicamente várias linhas relacionadas. Se a operação for bem-sucedida, o método WriteMultipleResult.getSuccess()
retornará true.
Consulte Oracle NoSQL Java SDK API Reference para obter mais detalhes sobre as várias classes e métodos.
private static void writeMul(NoSQLHandle handle,String parent_tblname,
String parent_data, String child_tblname, String child_data){
WriteMultipleRequest umRequest = new WriteMultipleRequest();
PutRequest putRequest =
new PutRequest().setValueFromJson(parent_data,null).setTableName(parent_tblname);
umRequest.add(putRequest, false);
putRequest =
new PutRequest().setValueFromJson(child_data,null).setTableName(child_tblname);
umRequest.add(putRequest, false);
WriteMultipleResult umResult = handle.writeMultiple(umRequest);
}
Você pode executar uma sequência de operações PutRequest
associadas a uma tabela que compartilham a mesma parte da chave de partição de suas chaves primárias como uma única operação de gravação atômica usando a classe borneo.WriteMultipleRequest
. Você também pode adicionar dados simultaneamente a uma tabela pai e filha usando a classe borneo.WriteMultipleRequest
. Essa é uma maneira eficiente de modificar atomicamente várias linhas relacionadas.
Consulte Oracle NoSQL Python SDK API Reference para obter mais detalhes sobre as várias classes e métodos.
def mul_write(handle,parent_tblname,parent_data,
child_tblname, child_data):
request = PutRequest()
request.set_value_from_json(parent_data)
request.set_table_name('ticket')
wm_req.add(request, True)
request1 = PutRequest()
request1.set_table_name(child_tblname)
request1.set_value_from_json(child_data)
wm_req.add(request1, True)
result = handle.write_multiple(wm_req)
Você pode executar uma sequência de operações PutRequest
associadas a uma tabela que compartilhem a mesma parte da chave de partição de suas chaves primárias como uma única operação de gravação atômica usando a classe WriteMultipleRequest
. Você também pode adicionar dados simultaneamente a uma tabela pai e filha usando a classe WriteMultipleRequest
. Essa é uma maneira eficiente de modificar atomicamente várias linhas relacionadas.
Consulte Referência da API do Oracle NoSQL Go SDK para obter mais detalhes sobre as várias classes e métodos.
//multiple write from the table
func mul_write(client *nosqldb.Client, err error, parenttbl_name string,
parent_data string, childtbl_name string, child_data string)(){
value, err := types.NewMapValueFromJSON(parent_data)
putReq := &nosqldb.PutRequest{
TableName: parenttbl_name,
Value: value,
}
wmReq := &nosqldb.WriteMultipleRequest{
TableName: "",
Timeout: 10 * time.Second,
}
wmReq.AddPutRequest(putReq, true)
value1, err := types.NewMapValueFromJSON(child_data)
putReq1 := &nosqldb.PutRequest{
TableName: childtbl_name,
Value: value1,
}
wmReq.AddPutRequest(putReq1, true)
wmRes, err := client.WriteMultiple(wmReq)
if err != nil {
fmt.Printf("WriteMultiple() failed: %v\n", err)
return
}
if wmRes.IsSuccess() {
fmt.Printf("WriteMultiple() succeeded\n")
} else {
fmt.Printf("WriteMultiple() failed\n")
}
}
Você pode executar uma sequência de operações put associadas a uma tabela que compartilham a mesma parte da chave de shard de suas chaves primárias como uma única operação de gravação atômica usando o método writeMany
. Você também pode adicionar dados simultaneamente a uma tabela pai e filha usando o método writeMany
. Essa é uma maneira eficiente de modificar atomicamente várias linhas relacionadas.
Para obter detalhes do método, consulte a classe NoSQLClient.
const ops = [
{
tableName: 'ticket',
put: {
"ticketNo": "1762344493810",
"confNo" : "LE6J4Z"
},
abortOnFail: true
},
{
tableName: 'ticket.bagInfo',
put: {
"ticketNo":"1762344493810",
"id":"79039899165297",
"tagNum":"17657806255240",
"routing":"MIA/LAX/MEL",
"lastActionCode":"OFFLOAD",
"lastActionDesc":"OFFLOAD",
"lastSeenStation":"MEL",
"lastSeenTimeGmt":"2019-02-01T16:13:00Z",
"bagArrivalDate":"2019-02-01T16:13:00Z"
},
abortOnFail: true
}
];
const res = await handle.writeMany(ops, null);
const ops = [
{
tableName: 'ticket',
put: {
"ticketNo": "1762344493810",
"confNo" : "LE6J4Z"
},
abortOnFail: true
},
{
tableName: 'ticket.bagInfo',
put: {
"ticketNo":"1762344493810",
"id":"79039899165297",
"tagNum":"17657806255240",
"routing":"MIA/LAX/MEL",
"lastActionCode":"OFFLOAD",
"lastActionDesc":"OFFLOAD",
"lastSeenStation":"MEL",
"lastSeenTimeGmt":"2019-02-01T16:13:00Z",
"bagArrivalDate":"2019-02-01T16:13:00Z"
},
abortOnFail: true
}
];
const res = await handle.writeMany(ops, null);
Você pode executar uma sequência de operações put associadas a uma tabela que compartilham a mesma parte da chave de shard de suas chaves primárias como uma única operação de gravação atômica usando o método PutManyAsync
. Você também pode adicionar dados simultaneamente a uma tabela pai e filha usando o método PutManyAsync
. Essa é uma maneira eficiente de modificar atomicamente várias linhas relacionadas.
Consulte Oracle NoSQL Dotnet SDK API Reference para obter mais detalhes sobre todas as classes e métodos.
private static async Task mul_write(NoSQLClient client,string parentbl_name,
string data1, string childtbl_name, string data2){
var result = await client.WriteManyAsync(
new WriteOperationCollection()
.AddPut(parentbl_name, FieldValue.FromJsonString(data1).AsMapValue)
.AddPut(childtbl_name, FieldValue.FromJsonString(data2).AsMapValue)
);
}
Usando APIs para adicionar dados de tabela