SnowConvert AI - Oracle - Instructions SQL¶
Ce document détaille l’ensemble des similitudes, des différences dans les syntaxes SQL et montre comment SnowConvert AI traduirait ces syntaxes SQL dans une syntaxe Snowflake SQL fonctionnelle.
Alter Table¶
Cette section vous montre les traductions relatives à ALTER TABLE.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
1. Description¶
Utilisez l’instruction ALTER TABLE pour modifier la définition d’une table non partitionnée, d’une table partitionnée, d’une partition de table ou d’une sous-partition de table. Pour les tables d’objets ou les tables relationnelles avec des colonnes d’objets, utilisez ALTER TABLE pour convertir la table à la dernière définition de son type référencé après que le type a été modifié (Documentation Oracle).
Syntaxe Oracle
Note
Pour connaître la syntaxe Snowflake, consultez la documentation suivante.
2. Sample Source Patterns¶
2.1. Alter table avec des clauses¶
Avertissement
memoptimize_read_clause et memoptimize_read_clause ne sont pas applicables dans Snowflake et sont donc supprimées.
Oracle¶
Snowflake¶
Note
Seuls certaines column_clauses et constraint_clauses sont applicables dans Snowflake. Dans Oracle, table alter permet de modifier les propriétés des partitions créées, mais dans Snowflake, ces actions ne sont pas nécessaires
2.2. Alter table avec cas non pris en charge¶
Oracle¶
Snowflake¶
2.3. Action ADDCONSTRAINT¶
L’action ADD CONSTRAINT a un équivalent dans Snowflake, mais elle ne permet d’ajouter qu’une seule contrainte par instruction ALTER TABLE. Elle sera donc commentée lorsque l’instruction contient deux contraintes ou plus.
Avertissement
enable_disable_clause est supprimée car elle n’est pas pertinente dans Snowflake.
Oracle¶
Snowflake¶
Problèmes connus¶
Certaines propriétés figurant dans les tables peuvent être adaptées ou ne pas être applicables.
Create Database Link¶
Avertissement
Actuellement, l’instruction _ Create Database Link _ n’est pas convertie mais elle est analysée. En outre, si votre code source contient des instructionscreate base de données link, celles-ci seront prises en compte dans le _ Rapport d’évaluation. _
Exemple de code source¶
Sortie Snowflake¶
Références des liens de base de données¶
Si, dans votre code d’entrée, vous utilisez des objets du lien de la base de données, le code de sortie conservera le nom de ces objets, mais le nom du lien de la base de données qu’ils utilisent sera supprimé.
Exemple de code source¶
Sortie Snowflake¶
EWIs connexes¶
SSC-EWI-OR0123: Connexions Db Link non prises en charge.
SSC-FDM-0007: Élément avec des dépendances manquantes.
Drop Table¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’instruction Drop Table permet de supprimer une table. Cette instruction varie quelque peu entre Oracle et Snowflake. Veuillez vérifier chaque documentation pour plus d’informations sur les différences.
Dans Oracle, la syntaxe Drop Table est la suivante :
Dans Snowflake, la syntaxe Drop Table est la suivante :
La principale différence est que Snowflake n’a pas de clause égale pour PURGE, car la table ne sera pas définitivement supprimée du système. Cependant, les clauses CASCADE CONSTRAINTS et CASCADE sont les mêmes. Tous deux suppriment la table, même s’il existe des clés étrangères qui font référence à cette table.
Exemples¶
Voyons maintenant quelques exemples de code, et ce à quoi il ressemblerait après avoir été transformé. Chaque exemple utilise une variante différente de l’instruction Drop Table.
Exemple 1 :¶
Cet exemple utilise l’instruction Drop Table aussi simple que possible.
Code d’entrée :
Code transformé :
Exemple 2 :¶
Cet exemple utilise l’instruction Drop Table avec la clause PURGE. Rappelez-vous qu’il n’y a pas d’équivalent dans Snowflake pour la clause PURGE à l’intérieur d’une instruction Drop Table.
Code d’entrée :
Code transformé :
Exemple 3 :¶
Cet exemple utilise l’instruction Drop Table avec la clause CASCADE CONSTRAINTS.
Code d’entrée :
Code transformé :
Dans le code transformé, le mot CONSTRAINTS est supprimé de la clause CASCADE CONSTRAINTS.
Exemple 4 :¶
Cet exemple utilise l’instruction Drop Table avec les clauses CASCADE CONSTRAINTS et PURGE.
Code d’entrée :
Code transformé :
Comme on l’a vu, le code change. Dans le nouveau code Snowflake, la clause PURGE est supprimée et le mot CONSTRAINTS est également supprimé de la clause CASCADE.
Équivalence fonctionnelle¶
Exécutez le code suivant pour vérifier l’équivalence fonctionnelle. Gardez à l’esprit que la seule partie qui n’est pas équivalente est la clause PURGE, qui, dans Oracle, supprime complètement la table du système et qu’il n’y a pas d’équivalent pour Snowflake. Dans les deux cas, la table est supprimée même si elle est référencée dans une autre table.
Oracle :
Snowflake :
EWIs connexes¶
Pas d’EWIs connexes.
Create Index¶
Avertissement
Actuellement, l’instruction _ Create Index _ n’est pas convertie mais elle est analysée. De même, si votre code source comporte des instructions create index, celles-ci seront prises en compte dans le _ rapport d’évaluation. _
Exemple de code de create index analysé :¶
Note
Pour des raisons architecturales, Snowflake ne prend pas en charge les index donc, SnowConvert AI supprimera tout le code lié à la création des index. Snowflake crée automatiquement des micropartitions pour chaque table, ce qui permet d’accélérer les performances des opérations DML. L’utilisateur n’a pas à se soucier de créer ou de gérer ces micro-partitions.
En général, cela suffit pour obtenir une performance de requête exceptionnellement bonne. Cependant, il existe des moyens de l’améliorer en créant des clés de clustering de données. La page officielle de Snowflake fournit de plus amples informations sur les micropartitions et le clustering de données.
Create Sequence¶
Voyons d’abord un exemple de code et ce à quoi il ressemblerait après avoir été transformé.
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.
Dans Oracle, après le nom de la séquence, les éléments qui font l’objet d’un commentaire sur NOT sont les suivants
START WITH 1000
INCREMENT BY 1
Si l’élément n’en fait pas partie, il sera commenté et ajouté en tant qu’avertissement juste avant la séquence de création, comme dans l’exemple.
Les éléments suivants sont supprimés
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 : La grammaire Snowflake est la même que celle d’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 :¶
Séquence START WITH¶
La valeur de l’instruction START WITH peut dépasser la valeur maximale autorisée par Snowflake. Voici ce que dit Snowflake à propos de la valeur de départ : Spécifiez la première valeur retournée par la séquence. Les valeurs prises en charge sont toutes les valeurs qui peuvent être représentées par un entier de 64 bits à deux compléments (de -2^63 à 2^63-1). Ainsi, d’après ce qui précède, la valeur maximale autorisée est 9223372036854775807 pour les nombres positifs et 9223372036854775808 pour les nombres négatifs.
Exemple de code¶
Oracle :¶
Snowflake :¶
EWIs connexes¶
SSC-EWI-OR0069: La propriété CURRVAL de la séquence n’est pas prise en charge dans Snowflake.
SSC-EWI-OR0068: La valeur de début de la séquence dépasse la valeur maximale autorisée par Snowflake.
Alter Session¶
Alter session¶
Alter session a un équivalent dans Snowflake et certaines variables sont mappées à des variables Snowflake. Si une permutation d’Alter Session n’est pas prise en charge, le nœud sera commenté et un avertissement sera ajouté.
Oracle :¶
Snowflake :¶
Référence des paramètres de session¶
Note
Les paramètres de session qui n’apparaissent pas dans la table ne sont pas actuellement transformés.
Paramètre de session |
Transformation Snowflake |
|---|---|
NLS_DATE_FORMAT |
DATE_INPUT_FORMAT et DATE_OUTPUT_FORMAT |
NLS_NUMERIC_CHARACTERS |
NOT SUPPORTED |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
Create Synonym¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Create Synonym¶
Les synonymes ne sont pas pris en charge par Snowflake. Les références aux synonymes seront modifiées pour l’objet d’origine.
Oracle :¶
Snowflake :¶
Exemple 1 : Synonyme qui fait référence à une table.¶
Code source Oracle :
Code migré de Snowflake : vous remarquerez que le site SELECT faisait initialement référence à un synonyme, mais qu’il fait désormais référence à la table qui pointe vers le synonyme.
Exemple 2 : Synonyme qui fait référence à un autre synonyme.¶
Code source Oracle :
Code migré de Snowflake : vous remarquerez qu’à l’origine SELECT, UPDATE et INSERT font référence à un synonyme, et font désormais référence à l’objet atomique, qui est une table.
[Exemple 3 : Synonyme qui fait référence à une vue¶
Code source Oracle
Code migré Snowflake : vous remarquerez que SELECT fait à l’origine référence à un synonyme, et fait désormais référence aux objets atomiques, qui sont une vue.
EWIs connexes¶
SSC-FDM-0001 : Les vues sélectionnant toutes les colonnes d’une même table ne sont pas exigées dans Snowflake.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-OR0005: Les synonymes ne sont pas pris en charge dans Snowflake, mais les références à ce synonyme ont été modifiées par le nom d’objet d’origine.