SnowConvert AI – Oracle – SQL-Anweisungen¶
Dieses Dokument beschreibt alle Ähnlichkeiten und Unterschiede bei der SQL-Syntax und wie SnowConvert AI diese SQL-Syntaxen in eine funktionsfähige Snowflake-SQL-Syntax übersetzen würde.
Alter Table¶
Dieser Abschnitt zeigt Ihnen die Übersetzungen im Zusammenhang mit ALTER TABLE.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
1. Description¶
Verwenden Sie die Anweisung ALTER TABLE, um die Definition einer nicht partitionierten Tabelle, einer partitionierten Tabelle, einer Tabellenpartition oder einer Tabellenunterpartition zu ändern. Bei Objekttabellen oder relationalen Tabellen mit Objektspalten verwenden Sie ALTER TABLE, um die Tabelle in die neueste Definition ihres referenzierten Typs zu konvertieren, nachdem der Typ geändert wurde (Oracle Dokumentation).
Oracle-Syntax
Bemerkung
Die Snowflake-Syntax können Sie in der folgenden Dokumentation nachlesen.
2. Sample Source Patterns¶
2.1. Alter Table mit Klauseln¶
Warnung
memoptimize_read_clause und memoptimize_read_clause sind in Snowflake nicht anwendbar und werden daher entfernt.
Oracle¶
Snowflake¶
Bemerkung
Nur einige column_clauses und constraint_clauses sind in Snowflake anwendbar. In Oracle erlaubt „Create Table“ die Änderung der Eigenschaften von erstellten Partitionen, aber in Snowflake sind diese Aktionen nicht erforderlich
2.2. Alter Table mit nicht unterstützen Fällen¶
Oracle¶
Snowflake¶
2.3. ADDCONSTRAINT-Aktion¶
Die Aktion ADD CONSTRAINT hat eine Entsprechung in Snowflake, aber es kann nur eine Einschränkung pro ALTER TABLE-Anweisung hinzugefügt werden, so dass sie kommentiert wird, wenn die Anweisung zwei oder mehr Einschränkungen enthält.
Warnung
enable_disable_clause wurde entfernt, da sie in Snowflake nicht relevant ist.
Oracle¶
Snowflake¶
Bekannte Probleme¶
Einige Eigenschaften in den Tabellen müssen möglicherweise angepasst werden oder sind nicht anwendbar.
Create Database Link¶
Warnung
Derzeit wird die _ Create Database Link _-Anweisung nicht konvertiert, sondern geparst. Wenn Ihr Quellcode außerdemcreate database link- Anweisungen enthält, werden diese im _ Bewertungsbericht berücksichtigt. _
Beispiel für einen Quellcode¶
Snowflake-Ausgabe¶
Referenzen zu Datenbank-Links¶
Wenn Sie in Ihrem Eingabecode Objekte aus dem Datenbank-Link verwenden, behält der Ausgabecode den Namen dieser Objekte bei, aber der Name der Datenbankverknüpfung, die sie verwenden, wird entfernt.
Beispiel für einen Quellcode¶
Snowflake-Ausgabe¶
Zugehörige EWIs¶
SSC-EWI-OR0123: Db Link-Verbindungen werden nicht unterstützt.
SSC-FDM-0007: Element mit fehlenden Abhängigkeiten.
Drop Table¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Eine DROP TABLE-Anweisung wird verwendet, um eine Tabelle zu entfernen. Diese Anweisung variiert ein wenig zwischen [Oracle ](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/DROP-TABLE. html#GUID-39D89EDC-155D-4A24-837E-D45DDA757B45)und Snowflake. Bitte überprüfen Sie die jeweilige Dokumentation, um weitere Informationen zu den Unterschieden zu erhalten.
In Oracle lautet die Syntax für „Drop Table“:
In Snowflake lautet die Syntax für „Drop Table“:
Der Hauptunterschied besteht darin, dass Snowflake keine gleichwertige Klausel für die PURGE-Klausel hat, da die Tabelle nicht dauerhaft aus dem System entfernt wird. Die CASCADE CONSTRAINTS- und die CASCADE-Klauseln sind jedoch gleich. Beide löschen die Tabelle, auch wenn Fremdschlüssel existieren, die auf diese Tabelle verweisen.
Beispiele¶
Sehen wir uns nun einige Codebeispiele an und wie der Code nach der Umwandlung aussehen würde. Jedes Beispiel verwendet eine andere Variante der DROP TABLE-Anweisung.
Beispiel 1:¶
In diesem Beispiel wird die DROP TABLE-Anweisung so einfach wie möglich verwendet.
Eingabecode:
Transformierter Code:
Beispiel 2:¶
Dieses Beispiel verwendet die DROP TABLE-Anweisung mit der PURGE-Klausel. Denken Sie daran, dass es in Snowflake keine Entsprechung für die PURGE-Klausel innerhalb einer DROP TABLE-Anweisung gibt.
Eingabecode:
Transformierter Code:
Beispiel 3:¶
Dieses Beispiel verwendet die DROP TABLE-Anweisung mit der CASCADE CONSTRAINTS-Klausel.
Eingabecode:
Transformierter Code:
In dem umgewandelten Code wird das Wort CONSTRAINTS aus der CASCADE CONSTRAINTS-Klausel entfernt.
Beispiel 4:¶
Dieses Beispiel verwendet die DROP TABLE-Anweisung mit den CASCADE CONSTRAINTS- und PURGE-Klauseln.
Eingabecode:
Transformierter Code:
Wie gesehen, ändert sich der Code. Im neuen Snowflake-Code wird die Klausel PURGE entfernt und das Wort CONSTRAINTS wird auch aus der CASCADE-Klausel entfernt.
Funktionsäquivalenz¶
Führen Sie den folgenden Code aus, um die Funktionsäquivalenz zu prüfen. Beachten Sie, dass der einzige Teil, der nicht äquivalent ist, die PURGE-Klausel ist, die in Oracle die Tabelle vollständig aus dem System entfernt. Es gibt keine Entsprechung für Snowflake. In beiden Fällen wird die Tabelle gelöscht, auch wenn sie in einer anderen Tabelle referenziert wird.
Oracle:
Snowflake:
Zugehörige EWIs¶
Keine zugehörigen EWIs.
Create Index¶
Warnung
Derzeit wird die Anweisung _ Create Index _ nicht konvertiert, aber geparst. Wenn Ihr Quellcode außerdem Create Index-Anweisungen enthält, werden diese im _ Bewertungsbericht_ berücksichtigt.
Beispiel für einen geparsten Code von Create Index:¶
Bemerkung
Aus architektonischen Gründen unterstützt Snowflake keine Indizes, sodass SnowConvert AI den gesamten Code entfernt, der mit der Erstellung von Indizes verbunden ist. Snowflake erstellt automatisch Mikropartitionen für jede Tabelle, um die Leistung von DML-Operationen zu beschleunigen. Benutzende müssen sich so nicht um die Erstellung oder Verwaltung dieser Mikropartitionen kümmern.
Normalerweise reicht das aus, um eine außergewöhnlich gute Abfrageleistung zu erzielen. Es gibt jedoch Möglichkeiten, dies zu verbessern, indem Sie Gruppierungsschlüssel für Daten erstellen. Auf der offiziellen Seite von Snowflake finden Sie weitere Informationen über Mikropartitionen und Data Clustering.
Create Sequence¶
Sehen wir uns zunächst ein Codebeispiel an und wie es nach der Umwandlung aussehen würde.
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.
In Oracle werden nach dem Namen der Sequenz die folgenden Elemente NICHT kommentiert
START WITH 1000
INCREMENT BY 1
Wenn das Element nicht dazu gehört, wird es kommentiert und als Warnung vor Create Sequence hinzugefügt, wie im Beispiel.
Die folgenden Elemente werden entfernt
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: Die Snowflake-Grammatik ist die gleiche wie die Oracle-Grammatik.
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:¶
Sequenz STARTWITH¶
Der Wert der START WITH-Anweisung kann den von Snowflake erlaubten Höchstwert überschreiten. Snowflake sagt zu diesem Startwert: Legt den ersten Wert fest, der von der Sequenz zurückgegeben wird. Unterstützt werden alle Werte, die durch eine 64-Bit-Zweierkomplement-Ganzzahl dargestellt werden können (von -2^63 bis 2^63-1)_. Demnach ist der maximal zulässige Wert 9223372036854775807 für positive Zahlen und 9223372036854775808 für negative Zahlen.
Beispielcode¶
Oracle:¶
Snowflake:¶
Zugehörige EWIs¶
SSC-EWI-OR0069: Die Sequence-Eigenschaft CURRVAL wird in Snowflake nicht unterstützt.
SSC-EWI-OR0068: Der Wert für den Start der Sequenz überschreitet den von Snowflake zulässigen Maximalwert.
Alter Session¶
Alter Session¶
Alter Session hat eine Entsprechung in Snowflake und einige der Variablen sind Snowflake-Variablen zugeordnet. Wenn eine Permutation von Alter Session nicht unterstützt wird, wird der Knoten kommentiert und eine Warnung hinzugefügt.
Oracle:¶
Snowflake:¶
Referenz Sitzungsparameter¶
Bemerkung
Die Sitzungsparameter, die nicht in der Tabelle erscheinen, werden derzeit nicht umgewandelt.
Sitzungsparameter |
Snowflake-Transformation |
|---|---|
NLS_DATE_FORMAT |
DATE_INPUT_FORMAT und DATE_OUTPUT_FORMAT |
NLS_NUMERIC_CHARACTERS |
NOT SUPPORTED |
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
Create Synonym¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Create Synonym¶
Synonyme werden in Snowflake nicht unterstützt. Die Verweise auf die Synonyme werden für das ursprüngliche Objekt geändert.
Oracle:¶
Snowflake:¶
Beispiel 1 Synonym für eine Tabelle.¶
Oracle-Quellcode:
Snowflake hat den Code migriert: Sie werden feststellen, dass SELECT ursprünglich auf ein Synonym verweist, jetzt aber auf die Tabelle, die auf das Synonym verweist.
Beispiel 2 Synonym für ein anderes Synonym.¶
Oracle-Quellcode:
Migrierter Snowflake-Code: Ursprünglich verwies SELECT , UPDATE, INSERT auf ein Synonym, jetzt bezieht es sich auf das atomare Objekt, bei dem es sich um eine Tabelle handelt.
Beispiel 3: Synonym für eine Ansicht.¶
Oracle-Quellcode
Migrierter Snowflake-Code: Ursprünglich verwies SELECT auf ein Synonym, jetzt bezieht es sich auf das atomare Objekt, bei dem es sich um eine Ansicht handelt.
Zugehörige EWIs¶
[SSC-FDM-0001](../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0001): Ansichten, die alle Spalten aus einer einzigen Tabelle auswählen, sind in Snowflake nicht erforderlich.
SSC-FDM-0006: Spalte vom Typ ‚number‘ verhält sich in Snowflake möglicherweise nicht ähnlich.
SSC-FDM-OR0005: Synonyme werden in Snowflake nicht unterstützt, aber Verweise auf dieses Synonym wurden durch den ursprünglichen Objektnamen geändert.