SnowConvert AI - Oracle - Instruções SQL¶
Este documento detalha todas as semelhanças, diferenças na sintaxe do SQL e como o SnowConvert AI traduziria essas sintaxes do SQL em uma sintaxe funcional do Snowflake SQL.
Alter Table¶
Esta seção mostra as traduções relacionadas a ALTER TABLE.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
1. Description¶
Use a instrução ALTER TABLE para alterar a definição de uma tabela não particionada, uma tabela particionada, uma partição de tabela ou uma subpartição de tabela. Para tabelas de objetos ou tabelas relacionais com colunas de objetos, use ALTER TABLE para converter a tabela na definição mais recente de seu tipo referenciado depois que o tipo tiver sido alterado (documentação do Oracle).
Sintaxe do Oracle
Nota
Para analisar a sintaxe do Snowflake, consulte a documentação a seguir.
2. Sample Source Patterns¶
2.1. Alter table com cláusulas¶
Aviso
memoptimize_read_clause e memoptimize_read_clause não são aplicáveis no Snowflake, portanto, estão sendo removidas.
Oracle¶
Snowflake¶
Nota
Somente algumas column_clauses e constraint_clauses são aplicáveis no Snowflake. No Oracle, alter table permite modificar as propriedades das partições criadas, mas, no Snowflake, essas ações não são necessárias
2.2. Alter table com casos não suportados¶
Oracle¶
Snowflake¶
2.3. Ação ADDCONSTRAINT¶
A ação ADD CONSTRAINT tem um equivalente no Snowflake, mas somente uma restrição pode ser adicionada por instrução ALTER TABLE, portanto, ela será comentada quando a instrução contiver duas ou mais restrições.
Aviso
enable_disable_clause foi removido, pois não é relevante no Snowflake.
Oracle¶
Snowflake¶
Problemas conhecidos¶
Algumas propriedades das tabelas podem ser adaptadas ou não aplicáveis.
Create Database Link¶
Aviso
Atualmente, a instrução _ Create Database Link _ não está sendo convertida, mas está sendo analisada. Além disso, se o seu código-fonte tiver instruçõescreate database link, elas serão contabilizadas no _ Relatório de avaliação. _
Exemplo de um código-fonte¶
Saída do Snowflake¶
Referências de links de banco de dados¶
Se no seu código de entrada você usar objetos do link do banco de dados, o código de saída manterá o nome desses objetos, mas o nome do link do banco de dados que eles estão usando será removido.
Exemplo de um código-fonte¶
Saída do Snowflake¶
EWIs relacionados¶
SSC-EWI-OR0123: Conexões Db Link incompatíveis.
SSC-FDM-0007: Elemento com dependências ausentes.
Drop Table¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
A instrução Drop Table é usada para remover uma tabela. Essa instrução varia um pouco entre o Oracle e o Snowflake. Verifique novamente cada documentação para obter mais informações sobre as diferenças.
No Oracle, a sintaxe de Drop Table é a seguinte:
No Snowflake, a sintaxe de Drop Table é a seguinte:
A principal diferença é que o Snowflake não tem uma cláusula igual para PURGE, pois a tabela não será removida permanentemente do sistema. No entanto, as cláusulas CASCADE CONSTRAINTS e CASCADE são as mesmas. Ambas eliminam a tabela, mesmo que existam chaves estrangeiras que façam referência a essa tabela.
Exemplos¶
Agora, vamos ver alguns exemplos de código e como ele ficaria depois de ser transformado. Cada exemplo usa uma variação diferente da instrução Drop Table.
Exemplo 1:¶
Este exemplo usa a instrução Drop Table da forma mais simples possível.
Código de entrada:
Código transformado:
Exemplo 2:¶
Este exemplo usa a instrução Drop Table com a cláusula PURGE. Lembre-se de que não há equivalente no Snowflake para a cláusula PURGE dentro de uma instrução Drop Table.
Código de entrada:
Código transformado:
Exemplo 3:¶
Este exemplo usa a instrução Drop Table com a cláusula CASCADE CONSTRAINTS.
Código de entrada:
Código transformado:
No código transformado, a palavra CONSTRAINTS é removida da cláusula CASCADE CONSTRAINTS.
Exemplo 4:¶
Este exemplo usa a instrução Drop Table com as cláusulas CASCADE CONSTRAINTS e PURGE.
Código de entrada:
Código transformado:
Como visto, o código muda. No novo código do Snowflake, a cláusula PURGE foi removida e a palavra CONSTRAINTS também foi removida da cláusula CASCADE.
Equivalência funcional¶
Execute o código a seguir para verificar a equivalência funcional; lembre-se de que a única parte que não é equivalente é a cláusula PURGE, que no Oracle remove completamente a tabela do sistema e não há igual para o Snowflake. Em ambos os casos, a tabela é descartada mesmo que seja referenciada em outra tabela.
Oracle:
Snowflake:
EWIs relacionados¶
Sem EWIs relacionados.
Create Index¶
Aviso
Atualmente, a instrução _ Create Index _ não está sendo convertida, mas está sendo analisada. Além disso, se o seu código-fonte tiver instruções Create index, elas serão contabilizadas no _ Relatório de avaliação. _
Exemplo de um código analisado de create index:¶
Nota
Por razões arquitetônicas, o Snowflake não oferece suporte a índices, então a SnowConvert AI removerá todo o código relacionado à criação de índices. O Snowflake automaticamente cria micropartições para cada tabela. Isso ajuda a acelerar o desempenho das operações DML, e o usuário não precisa se preocupar em criar ou gerenciar essas micropartições.
Normalmente, isso é suficiente para obter um desempenho de consulta excepcionalmente bom. No entanto, há maneiras de aprimorá-lo criando chaves de clustering de dados. A página oficial do Snowflake fornece mais informações sobre micropartições e clustering de dados.
Create Sequence¶
Vejamos primeiro um exemplo de código e como ele ficaria depois de ser transformado.
Oracle:¶
Snowflake:¶
The first change that it is done is to apply the schema or datawarehouse to the name of the sequence. The second transformation consists in removing some elements and add them as comments, since oracle has some elements in the create sequence that are not supported in Snowflake.
No Oracle, após o nome da sequência, os elementos que não são comentados são os seguintes
START WITH 1000
INCREMENT BY 1
Se o elemento não for um desses, ele será comentado e adicionado como um aviso logo antes da sequência de criação, como no exemplo.
Os elementos a seguir são os que foram removidos
MAXVALUE
NOMAXVALUE
MINVALUE
NOMINVALUE
CYCLE
NOCYCLE
CACHE
NOCACHE
ORDER
NOORDER
KEEP
NOKEEP
SESSION
GLOBAL
SCALE
EXTEND
SCALE
NOEXTEND
NOSCALE
SHARD
EXTEND
SHARD
NOEXTEND
NOSHARD
SEQUENCE EXPRESSIONS¶
NEXTVAL: A gramática do Snowflake é a mesma do Oracle.
CURRVAL: Snowflake does not have an equivalent so it is transformed to a stub function. Check this link to understand Snowflake’s approach.
Oracle:¶
Snowflake:¶
Sequência STARTWITH¶
O valor da instrução START WITH pode exceder o valor máximo permitido pelo Snowflake. O que a Snowflake disse sobre o valor inicial é o seguinte: Especifica o primeiro valor retornado pela sequência. Os valores compatíveis são qualquer valor que possa ser representado por um número inteiro de dois complementos de 64 bits (de -2^63 a 2^63-1). Portanto, de acordo com o que foi mencionado anteriormente, o valor máximo permitido é 9223372036854775807 para números positivos e 9223372036854775808 para números negativos.
Exemplo de código¶
Oracle:¶
Snowflake:¶
EWIs relacionados¶
SSC-EWI-OR0069: A propriedade sequencial CURRVAL não é compatível com o Snowflake.
SSC-EWI-OR0068: O valor inicial da sequência excede o valor máximo permitido pelo Snowflake.
Alter Session¶
Alter session¶
Alter session tem um equivalente no Snowflake e algumas das variáveis são mapeadas para as variáveis do Snowflake. Se uma permutação de Alter Session não for compatível, o nó será comentado e um aviso será adicionado.
Oracle:¶
Snowflake:¶
Referência dos parâmetros da sessão¶
Nota
Os parâmetros de sessão que não aparecem na tabela não estão sendo transformados no momento.
Parâmetro de sessão |
Transformação do Snowflake |
|---|---|
NLS_DATE_FORMAT |
DATE_INPUT_FORMAT e DATE_OUTPUT_FORMAT |
NLS_NUMERIC_CHARACTERS |
NOT SUPPORTED |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
Create Synonym¶
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Create Synonym¶
Os sinônimos não são compatíveis com o Snowflake. As referências aos sinônimos serão alteradas para o objeto original.
Oracle:¶
Snowflake:¶
Exemplo 1: Sinônimo que se refere a uma tabela.¶
Código-fonte Oracle:
Código migrado do Snowflake: você notará que SELECT se refere originalmente a um sinônimo, mas agora se refere à tabela que aponta o sinônimo.
Exemplo 2: Sinônimo que se refere a outro sinônimo.¶
Código-fonte Oracle:
Código migrado do Snowflake: você notará que, originalmente, SELECT, UPDATE, INSERT refere-se a um sinônimo, e agora se refere ao objeto atômico, que é uma tabela.
Exemplo 3: Sinônimo que se refere a uma exibição¶
Código-fonte Oracle
Código migrado do Snowflake: você notará que SELECT originalmente se refere a um sinônimo e, agora, se refere aos objetos atômicos, que é uma exibição.
EWIs relacionados¶
SSC-FDM-0001: As visualizações que selecionam todas as colunas de uma única tabela não são necessárias no Snowflake.
SSC-FDM-0006: A coluna do tipo número pode não se comportar de forma semelhante no Snowflake.
SSC-FDM-OR0005: Sinônimos não são compatíveis com o Snowflake, mas as referências a este sinônimo foram alteradas pelo nome do objeto original.