Mit APIs Tabellendaten hinzufügen
Fügen Sie der Tabelle Zeilen hinzu. Wenn Sie Daten in Tabellenzeilen speichern, kann Ihre Anwendung einfach Informationen aus einer Tabelle abrufen sowie Informationen hinzufügen oder löschen.
PutRequest
class / put
verwenden, um bedingungslose und bedingte Put-Befehle auszuführen:
- Löschen Sie alle vorhandenen Zeilen. Überschreiben ist die Standardfunktionalität.
- Nur erfolgreich, wenn die Zeile nicht vorhanden ist. Verwenden Sie in diesem Fall die Methode
IfAbsent
. - Nur erfolgreich, wenn die Zeile vorhanden ist. Verwenden Sie in diesem Fall die Methode
IfPresent
. - Nur erfolgreich, wenn die Zeile vorhanden ist und die Version mit einer bestimmten Version übereinstimmt. Verwenden Sie in diesem Fall die Methode
IfVersion
, und geben Sie mit der MethodesetMatchVersion
die Version für den Abgleich an.
Die Klasse PutRequest
stellt die Methode setValueFromJson
bereit, die eine JSON-Zeichenfolge zum Einfügen einer Zeile in die Tabelle verwendet. Die JSON-Zeichenfolge muss Feldnamen angeben, die den Tabellenfeldnamen entsprechen.
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");
}
}
Die Klasse borneo.PutRequest
stellt die Eingabe für die Methode borneo.NoSQLHandle.put()
dar, mit der einzelne Zeilen eingefügt werden.
Sie können der Tabelle auch JSON-Daten hinzufügen. Bei einer Tabelle mit festem Schema wird die JSON in das Zielschema konvertiert. JSON-Daten können direkt in eine Spalte des Typs JSON eingefügt werden. Mit dem JSON-Datentyp können Sie Tabellendaten ohne festes Schema erstellen, sodass die Daten flexibler verwendet werden können.
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
stellt eine Eingabe für die Funktion nosqldb.Put()
dar und wird zum Einfügen einzelner Zeilen verwendet.
Der für eine Zeile (in PutRequest
) angegebene Datenwert ist *types.MapValue
. Der key
-Teil jedes Eintrags in MapValue
muss mit dem Spaltennamen der Zieltabelle übereinstimmen, und der value
-Teil muss ein gültiger Wert für die Spalte sein. JSON-Daten können auch direkt in eine Spalte des Typs JSON
eingefügt werden. Mit dem JSON-Datentyp können Sie Tabellendaten ohne festes Schema erstellen, sodass die Daten flexibler verwendet werden können.
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")
}
Mit der Methode put
fügen Sie eine einzelne Zeile in die Tabelle ein. Details zur Methode finden Sie in der Klasse 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");
Mit der Methode PutAsync
und den zugehörigen Methoden PutIfAbsentAsync
, PutIfPresentAsync
und PutIfVersionAsync
wird eine einzelne Zeile in die Tabelle eingefügt oder eine einzelne Zeile aktualisiert.
Jede der obigen Put
-Methoden gibt Task<PutResult<RecordValue>>
zurück. Die PutResult
-Instanz enthält Informationen zu einem abgeschlossenen Put
-Vorgang, wie Erfolgsstatus (bedingte Put-Vorgänge sind möglicherweise nicht erfolgreich, wenn die entsprechende Bedingung nicht erfüllt wurde) und resultierender RowVersion. Beachten Sie, dass die Erfolgseigenschaft des Ergebnisses nur auf einen erfolgreichen Abschluss im Zusammenhang mit bedingten Put-Vorgängen hinweist und bei nicht bedingten Put-Vorgängen immer zutrifft. Wenn der Put-Vorgang aus einem anderen Grund nicht erfolgreich verläuft, wird eine Ausnahme ausgelöst. Die Verwendung von Feldern des Datentyps JSON ermöglicht mehr Flexibilität bei der Verwendung von Daten, da die Daten im JSON-Feld kein vordefiniertes Schema aufweisen. Um einen Wert in ein JSON-Feld einzufügen, geben Sie eine MapValue
-Instanz als Feldwert als Teil des Zeilenwerts an. Sie können den Wert auch über FieldValue.FromJsonString
aus einer JSON-Zeichenfolge erstellen.
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");
}
}
Mit der MultiWrite-API können Sie in einem einzelnen Datenbankvorgang mehr als eine Datenzeile hinzufügen.
Sie können eine Folge von PutRequest
-Vorgängen ausführen, die mit einer Tabelle verknüpft sind, die denselben Shard-Schlüsselteil ihrer Primärschlüssel wie ein einzelner atomarer Schreibvorgang mit der Klasse WriteMultipleRequest
verwenden. Sie können auch gleichzeitig Daten zu einer übergeordneten und untergeordneten Tabelle mit der Klasse WriteMultipleRequest
hinzufügen. Dies ist eine effiziente Möglichkeit, mehrere zugehörige Zeilen atomar zu ändern. Wenn der Vorgang erfolgreich ist, gibt die Methode WriteMultipleResult.getSuccess()
"true" zurück.
Weitere Informationen zu den verschiedenen Klassen und Methoden finden Sie unter Oracle NoSQL Java-SDK-API-Referenz.
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);
}
Sie können eine Sequenz von PutRequest
-Vorgängen ausführen, die mit einer Tabelle verknüpft sind, die denselben Shard-Schlüsselteil ihrer Primärschlüssel wie ein einzelner atomarer Schreibvorgang mit der Klasse borneo.WriteMultipleRequest
verwenden. Sie können auch gleichzeitig Daten zu einer übergeordneten und untergeordneten Tabelle mit der Klasse borneo.WriteMultipleRequest
hinzufügen. Dies ist eine effiziente Möglichkeit, mehrere zugehörige Zeilen atomar zu ändern.
Weitere Informationen zu den verschiedenen Klassen und Methoden finden Sie unter Oracle NoSQL Python-SDK-API-Referenz.
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)
Sie können eine Folge von PutRequest
-Vorgängen ausführen, die mit einer Tabelle verknüpft sind, die denselben Shard-Schlüsselteil ihrer Primärschlüssel wie ein einzelner atomarer Schreibvorgang mit der Klasse WriteMultipleRequest
verwenden. Sie können auch gleichzeitig Daten zu einer übergeordneten und untergeordneten Tabelle mit der Klasse WriteMultipleRequest
hinzufügen. Dies ist eine effiziente Möglichkeit, mehrere zugehörige Zeilen atomar zu ändern.
Weitere Informationen zu den verschiedenen Klassen und Methoden finden Sie in der Oracle NoSQL Go-SDK-API-Referenz.
//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")
}
}
Sie können eine Folge von Put-Vorgängen ausführen, die mit einer Tabelle verknüpft sind, die denselben Shard-Schlüsselteil ihrer Primärschlüssel wie ein einzelner atomarer Schreibvorgang mit der Methode writeMany
verwenden. Sie können auch gleichzeitig Daten zu einer übergeordneten und untergeordneten Tabelle mit der Methode writeMany
hinzufügen. Dies ist eine effiziente Möglichkeit, mehrere zugehörige Zeilen atomar zu ändern.
Details zur Methode finden Sie in der Klasse 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);
Sie können eine Folge von Put-Vorgängen ausführen, die mit einer Tabelle verknüpft sind, die denselben Shard-Schlüsselteil ihrer Primärschlüssel wie ein einzelner atomarer Schreibvorgang mit der Methode PutManyAsync
verwenden. Sie können auch gleichzeitig Daten zu einer übergeordneten und untergeordneten Tabelle mit der Methode PutManyAsync
hinzufügen. Dies ist eine effiziente Möglichkeit, mehrere zugehörige Zeilen atomar zu ändern.
Weitere Details zu allen Klassen und Methoden finden Sie in der Oracle NoSQL Dotnet-SDK-API-Referenz.
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)
);
}