Utilisation des API pour ajouter des données de table
Ajoutez des rangées à votre table. Lorsque vous stocker des données dans des rangées de table, votre application peut facilement extraire, ajouter ou supprimer des informations d'une table.
PutRequest
class / put
pour effectuer des mises inconditionnelles et conditionnelles à :
- Remplacer une rangée existante. Il s'agit de la fonctionnalité par défaut.
- Ne réussir que si la rangée n'existe pas. Utilisez la méthode
IfAbsent
dans ce cas. - Ne réussir que si la rangée existe. Utilisez la méthode
IfPresent
dans ce cas. - N'aboutissez au succès que si la rangée existe et que la version correspond à une version spécifique. Utilisez la méthode
IfVersion
dans ce cas et la méthodesetMatchVersion
pour spécifier la version à mettre en correspondance.
La classe PutRequest
fournit la méthode setValueFromJson
qui utilise une chaîne JSON pour alimenter une rangée à insérer dans la table. La chaîne JSON doit spécifier les noms de champ correspondant aux noms de champ de la table.
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
représente l'entrée de la méthode borneo.NoSQLHandle.put()
utilisée pour insérer des rangées uniques.
Vous pouvez également ajouter des données JSON à votre table. Dans le cas d'une table à schéma fixe, le JSON est converti en schéma cible. Les données JSON peuvent être insérées directement dans une colonne de type JSON. L'utilisation du type de données JSON vous permet de créer des données de table sans schéma fixe, ce qui permet une utilisation plus flexible des données.
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
représente une entrée pour la fonction nosqldb.Put()
et est utilisé pour insérer des rangées uniques.
La valeur de données fournie pour une rangée (dans PutRequest
) est *types.MapValue
. La partie key
de chaque entrée dans MapValue
doit correspondre au nom de colonne de la table cible et la partie value
doit être une valeur valide pour la colonne. Les données JSON peuvent également être insérées directement dans une colonne de type JSON
. L'utilisation du type de données JSON vous permet de créer des données de table sans schéma fixe, ce qui permet une utilisation plus flexible des données.
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")
}
Vous utilisez la méthode put
pour insérer une seule rangée dans la table. Pour plus de détails sur la méthode, voir 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");
La méthode PutAsync
et les méthodes connexes PutIfAbsentAsync
, PutIfPresentAsync
et PutIfVersionAsync
sont utilisées pour insérer une seule rangée dans la table ou mettre à jour une seule rangée.
Chacune des méthodes Put
ci-dessus retourne Task<PutResult<RecordValue>>
. L'instance PutResult
contient des informations sur une opération Put
terminée, telles que le statut de réussite (les opérations de mise conditionnelle peuvent échouer si la condition correspondante n'est pas satisfaite) et le résultat RowVersion. Notez que la propriété Success du résultat indique uniquement la réussite des opérations Put conditionnelles et est toujours vraie pour les Puts inconditionnels. Si l'opération Put échoue pour une autre raison, une exception sera générée. L'utilisation de champs de type de données JSON offre plus de flexibilité dans l'utilisation des données, car les données du champ JSON ne comportent pas de schéma prédéfini. Pour placer une valeur dans un champ JSON, fournissez une instance MapValue
comme valeur de champ dans la valeur de la rangée. Vous pouvez également créer sa valeur à partir d'une chaîne JSON au moyen de 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");
}
}
Vous pouvez ajouter plus d'une rangée de données dans une seule opération de base de données à l'aide de l'API MultiWrite.
Vous pouvez effectuer une séquence d'opérations PutRequest
associées à une table qui partage la même partie de clé de partition de leurs clés primaires qu'une seule opération d'écriture atomique à l'aide de la classe WriteMultipleRequest
. Vous pouvez également ajouter des données simultanément à une table parent et à une table enfant à l'aide de la classe WriteMultipleRequest
. Il s'agit d'un moyen efficace de modifier de manière atomique plusieurs lignes connexes. Si l'opération réussit, la méthode WriteMultipleResult.getSuccess()
retourne la valeur Vrai.
Voir Informations de référence sur l'API de la trousse SDK Java pour Oracle NoSQL pour plus de détails sur les différentes classes et méthodes.
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);
}
Vous pouvez effectuer une séquence d'opérations PutRequest
associées à une table qui partage la même partie de clé de partition de leurs clés primaires qu'une seule opération d'écriture atomique à l'aide de la classe borneo.WriteMultipleRequest
. Vous pouvez également ajouter des données simultanément à une table parent et à une table enfant à l'aide de la classe borneo.WriteMultipleRequest
. Il s'agit d'un moyen efficace de modifier de manière atomique plusieurs lignes connexes.
Voir Informations de référence sur l'API de la trousse SDK Python pour Oracle NoSQL pour plus de détails sur les différentes classes et méthodes.
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)
Vous pouvez effectuer une séquence d'opérations PutRequest
associées à une table qui partage la même partie de clé de partition de leurs clés primaires qu'une seule opération d'écriture atomique à l'aide de la classe WriteMultipleRequest
. Vous pouvez également ajouter des données simultanément à une table parent et à une table enfant à l'aide de la classe WriteMultipleRequest
. Il s'agit d'un moyen efficace de modifier de manière atomique plusieurs lignes connexes.
Voir Informations de référence sur l'API de la trousse SDK Go pour Oracle NoSQL pour plus de détails sur les différentes classes et méthodes.
//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")
}
}
Vous pouvez effectuer une séquence d'opérations Put associées à une table qui partage la même partie de clé de partition de leurs clés primaires qu'une seule opération d'écriture atomique à l'aide de la méthode writeMany
. Vous pouvez également ajouter des données simultanément à une table parent et à une table enfant à l'aide de la méthode writeMany
. Il s'agit d'un moyen efficace de modifier de manière atomique plusieurs lignes connexes.
Pour plus de détails sur la méthode, voir 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);
Vous pouvez effectuer une séquence d'opérations Put associées à une table qui partage la même partie de clé de partition de leurs clés primaires qu'une seule opération d'écriture atomique à l'aide de la méthode PutManyAsync
. Vous pouvez également ajouter des données simultanément à une table parent et à une table enfant à l'aide de la méthode PutManyAsync
. Il s'agit d'un moyen efficace de modifier de manière atomique plusieurs lignes connexes.
Voir Informations de référence sur l'API de la trousse SDK Dotnet pour Oracle NoSQL pour plus de détails sur toutes les classes et méthodes.
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)
);
}
Utilisation des API pour ajouter des données de table