Utilizzo delle API per aggiungere i dati delle tabelle
Aggiungere righe alla tabella. Quando si memorizzano i dati nelle righe di tabella, l'applicazione può recuperare, aggiungere o eliminare facilmente le informazioni da una tabella.
PutRequest
class / put
per eseguire put incondizionati e condizionali per:
- Consente di sovrascrivere qualsiasi riga esistente. Sovrascrivi è la funzionalità predefinita.
- Riuscito solo se la riga non esiste. In questo caso, utilizzare il metodo
IfAbsent
. - Riuscito solo se la riga esiste. In questo caso, utilizzare il metodo
IfPresent
. - Riuscito solo se la riga esiste e la versione corrisponde a una versione specifica. Utilizzare il metodo
IfVersion
per questo caso e il metodosetMatchVersion
per specificare la versione da abbinare.
La classe PutRequest
fornisce il metodo setValueFromJson
che utilizza una stringa JSON per popolare una riga da inserire nella tabella. La stringa JSON deve specificare i nomi dei campi corrispondenti ai nomi dei campi della tabella.
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");
}
}
La classe borneo.PutRequest
rappresenta l'input per il metodo borneo.NoSQLHandle.put()
utilizzato per inserire righe singole.
Puoi anche aggiungere dati JSON alla tua tabella. Nel caso di una tabella con schema fisso, la notazione JSON viene convertita nello schema di destinazione. I dati JSON possono essere inseriti direttamente in una colonna di tipo JSON. L'uso del tipo di dati JSON consente di creare i dati della tabella senza uno schema fisso, consentendo un uso più flessibile dei dati.
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')
nosqldb.PutRequest
rappresenta un input per la funzione nosqldb.Put()
e viene utilizzato per inserire righe singole.
Il valore dati fornito per una riga (in PutRequest
) è *types.MapValue
. La parte key
di ogni voce nel file MapValue
deve corrispondere al nome colonna della tabella di destinazione e la parte value
deve essere un valore valido per la colonna. I dati JSON possono anche essere inseriti direttamente in una colonna di tipo JSON
. L'uso del tipo di dati JSON consente di creare i dati della tabella senza uno schema fisso, consentendo un uso più flessibile dei dati.
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")
}
Il metodo put
consente di inserire una sola riga nella tabella. Per ulteriori informazioni sul metodo, vedere la 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");
Il metodo PutAsync
e i metodi correlati PutIfAbsentAsync
, PutIfPresentAsync
e PutIfVersionAsync
vengono utilizzati per inserire una singola riga nella tabella o aggiornare una singola riga.
Ciascuno dei metodi Put
riportati sopra restituisce Task<PutResult<RecordValue>>
. L'istanza PutResult
contiene informazioni su un'operazione Put
completata, ad esempio lo stato di operazione riuscita (le operazioni put condizionali potrebbero non riuscire se la condizione corrispondente non è stata soddisfatta) e il risultato RowVersion. Tenere presente che la proprietà Successo del risultato indica solo il completamento riuscito in relazione alle operazioni put condizionali ed è sempre vero per gli inserimenti incondizionati. Se l'operazione Put non riesce per qualsiasi altro motivo, verrà restituita un'eccezione. L'uso di campi di tipo dati JSON consente una maggiore flessibilità nell'uso dei dati poiché i dati nel campo JSON non dispongono di uno schema predefinito. Per inserire un valore in un campo JSON, fornire un'istanza MapValue
come valore di campo come parte del valore di riga. È inoltre possibile crearne il valore da una stringa JSON tramite 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");
}
}
È possibile aggiungere più righe di dati in una singola operazione di database utilizzando l'API MultiWrite.
È possibile eseguire una sequenza di operazioni PutRequest
associate a una tabella che condividono la stessa parte della chiave di partizione delle relative chiavi primarie come singola operazione di scrittura atomica utilizzando la classe WriteMultipleRequest
. È inoltre possibile aggiungere contemporaneamente dati a una tabella padre e figlio utilizzando la classe WriteMultipleRequest
. Questo è un modo efficiente per modificare atomicamente più righe correlate. Se l'operazione riesce, il metodo WriteMultipleResult.getSuccess()
restituisce true.
Per ulteriori informazioni sulle varie classi e metodi, consulta Oracle NoSQL Java SDK API Reference.
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);
}
È possibile eseguire una sequenza di operazioni PutRequest
associate a una tabella che condividono la stessa parte della chiave di partizione delle relative chiavi primarie come singola operazione di scrittura atomica utilizzando la classe borneo.WriteMultipleRequest
. È inoltre possibile aggiungere contemporaneamente dati a una tabella padre e figlio utilizzando la classe borneo.WriteMultipleRequest
. Questo è un modo efficiente per modificare atomicamente più righe correlate.
Per ulteriori informazioni sulle varie classi e metodi, vedere Oracle NoSQL Python SDK API Reference.
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)
È possibile eseguire una sequenza di operazioni PutRequest
associate a una tabella che condividono la stessa parte della chiave di partizione delle relative chiavi primarie come singola operazione di scrittura atomica utilizzando la classe WriteMultipleRequest
. È inoltre possibile aggiungere contemporaneamente dati a una tabella padre e figlio utilizzando la classe WriteMultipleRequest
. Questo è un modo efficiente per modificare atomicamente più righe correlate.
Consulta Oracle NoSQL Go SDK API Reference per ulteriori dettagli sulle varie classi e metodi.
//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")
}
}
È possibile eseguire una sequenza di operazioni put associate a una tabella che condividono la stessa parte della chiave di partizione delle relative chiavi primarie come singola operazione di scrittura atomica utilizzando il metodo writeMany
. È inoltre possibile aggiungere contemporaneamente dati a una tabella padre e figlio utilizzando il metodo writeMany
. Questo è un modo efficiente per modificare atomicamente più righe correlate.
Per ulteriori informazioni sul metodo, vedere la 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);
È possibile eseguire una sequenza di operazioni put associate a una tabella che condividono la stessa parte della chiave di partizione delle relative chiavi primarie come singola operazione di scrittura atomica utilizzando il metodo PutManyAsync
. È inoltre possibile aggiungere contemporaneamente dati a una tabella padre e figlio utilizzando il metodo PutManyAsync
. Questo è un modo efficiente per modificare atomicamente più righe correlate.
Per ulteriori informazioni su tutte le classi e i metodi, consulta Oracle NoSQL Dotnet SDK API Reference.
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)
);
}
Utilizzo delle API per aggiungere i dati delle tabelle