Modificando Tabelas Singleton com APIs
Saiba como modificar uma tabela singleton usando APIs.
Modifique uma tabela singleton para:
-
Adicionar novos campos a uma tabela existente
Exemplo:
String alterTableDDL = ALTER TABLE <table name> (ADD age INTEGER); TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
Excluir campos existentes em uma tabela
Exemplo:
String alterTableDDL = ALTER TABLE <table name> (DROP age); TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
Para alterar o valor de TTL padrão
Exemplo:
String alterTableDDL = ALTER TABLE <table name> USING TTL 7 DAYS; TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
Modificar limites da tabela
Exemplo:
TableLimits newLimits = new TableLimits(10, 10, 1); TableRequest treq = new TableRequest().setTableName(tableName).setTableLimits(newLimits); -
Congelar o esquema da tabela
Exemplo: Use esquema de congelamento se a tabela contiver colunas JSON
String alterTableDDL = ALTER TABLE <table name> freeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);Exemplo: Use congelar força de esquema se a tabela não contiver colunas JSON
String alterTableDDL = ALTER TABLE <table name> freeze schema force; TableRequest treq = new TableRequest().setStatement(alterTableDDL); -
Descongelar o esquema da tabela
Exemplo:
String alterTableDDL = ALTER TABLE <table name> unfreeze schema; TableRequest treq = new TableRequest().setStatement(alterTableDDL);
Usando a API TableRequest para alterar a tabela
Você pode usar a API TableRequest para alterar a definição de uma tabela NoSQL.
A classe TableRequest é usada para modificar tabelas. A execução das operações especificadas por esta solicitação é assíncrona. Estas são operações potencialmente de longa duração. TableResult é retornado de operações TableRequest e encapsula o estado da tabela. Consulte Referência da API do Oracle NoSQL Java SDK para obter mais detalhes sobre a classe TableRequest e seus métodos.
Faça download do código completo AlterTable.java nos exemplos aqui.
/**
* 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");
}
A classe borneo.TableRequest é usada para modificar tabelas. Todas as chamadas para borneo.NoSQLHandle.table_request() são assíncronas, portanto, é necessário verificar o resultado e chamar borneo.TableResult.wait_for_completion() para aguardar a conclusão da operação. Consulte Referência da API do Oracle NoSQL Python SDK para obter mais detalhes sobre o table_request e seus métodos.
Faça download do código completo AlterTable.py nos exemplos aqui.
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')
A classe TableRequest é usada para modificar tabelas. A execução das operações especificadas pelo TableRequest é assíncrona. Estas são operações potencialmente de longa duração. Essa solicitação é usada como entrada de uma operação Client.DoTableRequest(), que retorna uma TableResult que pode ser usada para sondagem até que a tabela atinja o estado desejado. Consulte Referência da API do Oracle NoSQL Go SDK para obter mais detalhes sobre os vários métodos da classe TableRequest.
Faça download do código completo AlterTable.go dos exemplos aqui.
//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
}
Você pode usar o método tableDDL para modificar uma tabela. Este método é assíncrono e retorna uma Promessa de TableResult. O TableResult é um objeto JavaScript sem formatação que encapsula o estado da tabela após a operação DDL. Para obter detalhes do método, consulte a classe NoSQLClient.
Faça download do código JavaScript completo AlterTable.js nos exemplos aqui e o código TypeScript completo AlterTable.ts nos exemplos aqui.
//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);
}
Você pode usar um dos dois métodos ExecuteTableDDLAsync e ExecuteTableDDLWithCompletionAsync para modificar uma tabela. Os dois métodos retornam Task<TableResult>. A instância TableResult encapsula o estado da tabela após a operação DDL. Consulte Referência da API do SDK do Oracle NoSQL Dotnet para obter mais detalhes sobre esses métodos.
Faça download do código completo AlterTable.cs nos exemplos aqui.
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);
}