Singleton-Tabellen mit APIs ändern
Erfahren Sie, wie Sie eine Singleton-Tabelle mit APIs ändern.
- Neue Felder zu einer bestehenden Tabelle hinzufügen
Beispiel:
String alterTableDDL = ALTER TABLE <table name> (ADD age INTEGER); TableRequest treq = new TableRequest().setStatement(alterTableDDL);
- Derzeit vorhandene Felder in einer Tabelle löschen
Beispiel:
String alterTableDDL = ALTER TABLE <table name> (DROP age); TableRequest treq = new TableRequest().setStatement(alterTableDDL);
- TTL-Standardwert ändern
Beispiel:
String alterTableDDL = ALTER TABLE <table name> USING TTL 7 DAYS; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
- Tabellenlimits ändern
Beispiel:
TableLimits newLimits = new TableLimits(10, 10, 1); TableRequest treq = new TableRequest().setTableName(tableName).setTableLimits(newLimits);
- Schema der Tabelle einfrieren
Beispiel: Verwenden Sie Fixierungsschema, wenn die Tabelle JSON-Spalten enthält
String alterTableDDL = ALTER TABLE <table name> freeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
Beispiel: Verwenden Sie die Option Schema erzwingen, wenn die Tabelle keine JSON-Spalten enthält
String alterTableDDL = ALTER TABLE <table name> freeze schema force; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
- Fixierung des Schemas der Tabelle aufheben
Beispiel:
String alterTableDDL = ALTER TABLE <table name> unfreeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
Verwandte Themen
Tabelle mit der TableRequest-API ändern
Mit der TableRequest-API können Sie die Definition einer NoSQL-Tabelle ändern.
Mit der Klasse TableRequest
werden Tabellen geändert. Die Ausführung der von dieser Anforderung angegebenen Vorgänge ist asynchron. Dies sind möglicherweise Operationen mit langer Ausführungszeit. TableResult
wird von TableRequest
-Vorgängen zurückgegeben und kapselt den Status der Tabelle. Weitere Informationen zur Klasse TableRequest
und ihren Methoden finden Sie unter Oracle NoSQL Java-SDK-API-Referenz.
/**
* 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");
}
Mit der Klasse borneo.TableRequest
werden Tabellen geändert. Alle Aufrufe von borneo.NoSQLHandle.table_request()
sind asynchron. Daher müssen Sie das Ergebnis prüfen und borneo.TableResult.wait_for_completion()
aufrufen, um auf den Abschluss des Vorgangs zu warten. Weitere Informationen zu table_request
und den zugehörigen Methoden finden Sie unter Oracle NoSQL Python-SDK-API-Referenz.
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')
Mit der Klasse TableRequest
werden Tabellen geändert. Die Ausführung von Vorgängen, die mit TableRequest
angegeben werden, ist asynchron. Dies sind möglicherweise Operationen mit langer Ausführungszeit. Diese Anforderung wird als Eingabe eines Client.DoTableRequest()
-Vorgangs verwendet, der eine TableResult
zurückgibt, die zum Polling verwendet werden kann, bis die Tabelle den gewünschten Status erreicht. Weitere Informationen zu den verschiedenen Methoden der Klasse TableRequest
finden Sie in der Oracle NoSQL Go-SDK-API-Referenz.
//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
}
Mit der Methode tableDDL
können Sie eine Tabelle ändern. Diese Methode ist asynchron und gibt eine Zusage von TableResult
zurück. TableResult
ist ein einfaches JavaScript-Objekt, das den Status der Tabelle nach dem DDL-Vorgang kapselt. Details zur Methode finden Sie in der Klasse NoSQLClient.
//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);
}
Sie können eine Tabelle mit einer der beiden Methoden ExecuteTableDDLAsync
und ExecuteTableDDLWithCompletionAsync
ändern. Beide Methoden geben Task<TableResult>
zurück. Die Instanz TableResult
kapselt den Status der Tabelle nach dem DDL-Vorgang. Weitere Informationen zu diesen Methoden finden Sie in der Oracle NoSQL Dotnet-SDK-API-Referenz.
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);
}