Modification de tables uniques à l'aide d'API
Découvrez comment modifier une table singleton à l'aide d'API.
Vous modifiez une table singleton pour :
-
ajouter de nouveaux champs à une table existante,
Par exemple :
String alterTableDDL = ALTER TABLE <table name> (ADD age INTEGER); TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
supprimer les champs existants dans une table,
Par exemple :
String alterTableDDL = ALTER TABLE <table name> (DROP age); TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
modifier la valeur de durée de vie par défaut,
Par exemple :
String alterTableDDL = ALTER TABLE <table name> USING TTL 7 DAYS; TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
modifier les limites de la table.
Par exemple :
TableLimits newLimits = new TableLimits(10, 10, 1); TableRequest treq = new TableRequest().setTableName(tableName).setTableLimits(newLimits); -
Geler le schéma de la table
Exemple : utiliser un schéma de blocage si la table contient des colonnes JSON
String alterTableDDL = ALTER TABLE <table name> freeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);Exemple : utiliser la force de blocage de schéma si la table ne contient aucune colonne JSON
String alterTableDDL = ALTER TABLE <table name> freeze schema force; TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
Libérer le schéma de la table
Par exemple :
String alterTableDDL = ALTER TABLE <table name> unfreeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
Utilisation de l'API TableRequest pour modifier la table
Vous pouvez utiliser l'API TableRequest pour modifier la définition d'une table NoSQL.
La classe TableRequest permet de modifier des tables. L'exécution des opérations indiquées par cette demande est asynchrone. Il s'agit d'opérations potentiellement longues. TableResult est renvoyé par les opérations TableRequest et encapsule l'état de la table. Pour plus de détails sur la classe TableRequest et ses méthodes, reportez-vous à Référence d'API de kit SDK Java Oracle NoSQL.
Téléchargez le code complet AlterTable.java à partir des exemples ici.
/**
* Alter the table stream_acct and add a column
*/
private static void alterTab(NoSQLHandle handle) throws Exception {
String alterTableDDL = "ALTER TABLE " + tableName +"(ADD acctname STRING)";
TableRequest treq = new TableRequest().setStatement(alterTableDDL);
System.out.println("Altering table " + tableName);
TableResult tres = handle.tableRequest(treq);
tres.waitForCompletion(handle, 60000, /* wait 60 sec */
1000); /* delay ms for poll */
System.out.println("Table " + tableName + " is altered");
}
La classe borneo.TableRequest permet de modifier des tables. Tous les appels vers borneo.NoSQLHandle.table_request() sont asynchrones. Il est donc nécessaire de vérifier le résultat et d'appeler borneo.TableResult.wait_for_completion() pour attendre la fin de l'opération. Pour plus de détails sur table_request et ses méthodes, reportez-vous à Référence d'API de kit SDK Python Oracle NoSQL.
Téléchargez le code complet AlterTable.py à partir des exemples ici.
def alter_table(handle):
statement = '''ALTER TABLE stream_acct(ADD acctname STRING)'''
request = TableRequest().set_statement(statement)
table_result = handle.do_table_request(request, 40000, 3000)
table_result.wait_for_completion(handle, 40000, 3000)
print('Table stream_acct is altered')
La classe TableRequest permet de modifier des tables. L'exécution des opérations indiquées par TableRequest est asynchrone. Il s'agit d'opérations potentiellement longues. Cette demande est utilisée en tant qu'entrée d'une opération Client.DoTableRequest(), qui renvoie une valeur TableResult qui peut être utilisée pour interroger jusqu'à ce que la table atteigne l'état souhaité. Pour plus de détails sur les différentes méthodes de la classe TableRequest, reportez-vous à Référence d'API du kit SDK Go Oracle NoSQL.
Téléchargez le code complet AlterTable.go à partir des exemples ici.
//alter an existing table and add a column
func alterTable(client *nosqldb.Client, err error, tableName string)(){
stmt := fmt.Sprintf("ALTER TABLE %s (ADD acctName STRING)",tableName)
tableReq := &nosqldb.TableRequest{
Statement: stmt,
}
tableRes, err := client.DoTableRequest(tableReq)
if err != nil {
fmt.Printf("cannot initiate ALTER TABLE request: %v\n", err)
return
}
// The alter table request is asynchronous, wait for table alteration to complete.
_, err = tableRes.WaitForCompletion(client, 60*time.Second, time.Second)
if err != nil {
fmt.Printf("Error finishing ALTER TABLE request: %v\n", err)
return
}
fmt.Println("Altered table ", tableName)
return
}
Vous pouvez utiliser la méthode tableDDL pour modifier une table. Cette méthode est asynchrone et renvoie la promesse TableResult. TableResult est un objet JavaScript simple qui encapsule l'état de la table après l'opération LDD. Pour plus de détails sur la méthode, reportez-vous à la classe NoSQLClient.
Téléchargez le code JavaScript complet AlterTable.js à partir des exemples ici et le code TypeScript complet AlterTable.ts à partir des exemples ici.
//alter a table and add a column
async function alterTable(handle) {
const alterDDL = `ALTER TABLE ${TABLE_NAME} (ADD acctname STRING)`;
let res = await handle.tableDDL(alterDDL);
console.log('Table altered: ' + TABLE_NAME);
}
Vous pouvez utiliser l'une des deux méthodes ExecuteTableDDLAsync et ExecuteTableDDLWithCompletionAsync pour modifier une table. Les deux méthodes renvoient Task<TableResult>. L'instance TableResult encapsule l'état de la table après l'opération LDD. Pour plus de détails sur ces méthodes, reportez-vous à Référence d'API du kit SDK Oracle NoSQL Dotnet.
Téléchargez le code complet AlterTable.cs à partir des exemples ici.
private static async Task alterTable(NoSQLClient client){
var sql = $@"ALTER TABLE {TableName}(ADD acctname STRING)";
var tableResult = await client.ExecuteTableDDLAsync(sql);
// Wait for the operation completion
await tableResult.WaitForCompletionAsync();
Console.WriteLine(" Table {0} is altered", tableResult.TableName);
}