Modificando Tabelas Singleton Usando APIs
Saiba como modificar uma tabela única usando APIs.
- 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);
Tópicos Relacionados
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 de execução potencialmente longa. TableResult
é retornado das operações TableRequest
e encapsula o estado da tabela. Consulte Oracle NoSQL Java SDK API Reference para obter mais detalhes sobre a classe TableRequest
e seus métodos.
/**
* 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 Oracle NoSQL Python SDK API Reference para obter mais detalhes sobre table_request
e seus métodos.
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 de operações especificadas por TableRequest
é assíncrona. Estas são operações de execução potencialmente longa. Essa solicitação é usada como a entrada de uma operação Client.DoTableRequest()
, que retorna um TableResult
que pode ser usado para sondar 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
.
//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. Esse método é assíncrono e retorna uma Promessa de TableResult
. O TableResult
é um objeto JavaScript simples que encapsula o estado da tabela após a operação DDL. Para obter detalhes do método, consulte a classe 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);
}
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 Oracle NoSQL Dotnet SDK para obter mais detalhes sobre esses métodos.
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);
}