Singleton-Tabellen mithilfe von APIs bearbeiten
Erfahren Sie, wie Sie eine Singleton-Tabelle mit APIs ändern.
Sie ändern eine Singleton-Tabelle wie folgt:
-
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);
Tabelle mit TableRequest-API ändern
Mit der TableRequest-API können Sie die Definition einer NoSQL-Tabelle ändern.
Die Klasse TableRequest wird zum Ändern von Tabellen verwendet. Die Ausführung der von dieser Anforderung angegebenen Vorgänge ist asynchron. Dies sind möglicherweise Vorgänge mit langer Ausführungszeit. TableResult wird von TableRequest-Vorgängen zurückgegeben und kapselt den Status der Tabelle. Weitere Informationen zur TableRequest-Klasse und ihren Methoden finden Sie in der Oracle NoSQL Java SDK-API-Referenz.
Laden Sie den vollständigen Code AlterTable.java aus den Beispielen hier herunter.
/**
* 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");
}
Die Klasse borneo.TableRequest wird zum Ändern von Tabellen verwendet. 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 zu warten, bis der Vorgang abgeschlossen ist. Weitere Informationen zu table_request und den Methoden finden Sie in der Oracle NoSQL Python-SDK-API-Referenz.
Laden Sie den vollständigen Code AlterTable.py aus den Beispielen hier herunter.
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')
Die Klasse TableRequest wird zum Ändern von Tabellen verwendet. Die Ausführung der mit TableRequest angegebenen Vorgänge ist asynchron. Dies sind möglicherweise Vorgänge 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.
Laden Sie den vollständigen Code AlterTable.go aus den Beispielen hier herunter.
//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
}
Sie können eine Tabelle mit der Methode tableDDL ändern. Diese Methode ist asynchron und gibt einen Promise von TableResult zurück. TableResult ist ein einfaches JavaScript-Objekt, das den Status der Tabelle nach dem DDL-Vorgang kapselt. Methodendetails finden Sie in der Klasse NoSQLClient.
Laden Sie den vollständigen JavaScript-Code AlterTable.js aus den Beispielen hier herunter, und den vollständigen TypeScript-Code AlterTable.ts aus den Beispielen hier.
//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 TableResult-Instanz kapselt den Status der Tabelle nach dem DDL-Vorgang. Weitere Informationen zu diesen Methoden finden Sie in der Oracle NoSQL Dotnet SDK-API-Referenz.
Laden Sie den vollständigen Code AlterTable.cs aus den Beispielen hier herunter.
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);
}