SnowConvert AI – PostgreSQL-Probleme¶
Bemerkung
Konvertierungsbereich
SnowConvert AI für PostgreSQL konzentriert seine Bewertungs- und Übersetzungsmöglichkeiten in erster Linie auf TABLES und VIEWS. Obwohl SnowConvert AI andere Arten von ANSI-Standardanweisungen erkennen kann, werden diese derzeit noch nicht vollständig für die Konvertierung unterstützt. Das bedeutet, dass das Tool sie zwar identifiziert, aber keine vollständige Übersetzung für diese nicht unterstützten Codeeinheiten durchführt.
SSC-EWI-PG0001¶
Alter wird bei Snowflake nicht unterstützt
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler wurde hinzugefügt, weil SnowConvert AI die Funktion age() nicht unterstützt.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
SELECT
age(date1::date, date2::date)
FROM
Table1;
Generierter Code:¶
Snowflake¶
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECTS "age", "Table1" **
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0001 - AGE IS NOT SUPPORTED ON SNOWFLAKE. ***/!!!
AGE(date1::date, date2::date)
FROM
Table1;
Best Practices¶
Die
Datediff-Zeitfunktion kann einige Fälle lösen, in denen das Ziel der Abfrage darin besteht, einen bestimmten Wertebereich zu erhalten, aber dies muss für jedes Szenario manuell gehandhabt werden. Weitere Informationen dazu finden Sie in der Snowflake-Dokumentation zu Datediff.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0002¶
Einschränkungsindexparameter nicht unterstützt
Schweregrad¶
Niedrig
Beschreibung¶
Die Verwendung der folgenden Indexparameter in Einschränkungen wird von Snowflake nicht unterstützt.
INCLUDE
WITH
USING INDEX TABLESPACE
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE TABLE Table1 (
code char(5),
date_prod date,
CONSTRAINT production UNIQUE(date_prod) INCLUDE(code)
);
CREATE TABLE Table2 (
name varchar(40),
UNIQUE(name) WITH (fillfactor=70)
);
CREATE TABLE Table3 (
name varchar(40),
PRIMARY KEY(name) USING INDEX TABLESPACE tablespace_name
);
Generierter Code:¶
Snowflake¶
CREATE TABLE Table1 (
code char(5),
date_prod date,
CONSTRAINT production UNIQUE(date_prod)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - INCLUDE PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! INCLUDE(code)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
CREATE TABLE Table2 (
name varchar(40),
UNIQUE(name)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - WITH PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! WITH (fillfactor=70)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
CREATE TABLE Table3 (
name varchar(40),
PRIMARY KEY(name)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0002 - USING PARAMETER NOT APPLICABLE. CONSTRAINT INDEX PARAMETERS ARE NOT SUPPORTED IN SNOWFLAKE. ***/!!! USING INDEX TABLESPACE tablespace_name
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0003¶
Erben nicht unterstützt
Schweregrad¶
Niedrig
Beschreibung¶
Erben zwischen Tabellen ist in PostgreSQL erlaubt, aber Snowflake unterstützt dies nicht. Weitere Informationen zum Erben in PostgreSQL finden Sie hier.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
Generierter Code:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0003 - TABLE INHERITANCE IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
ALTER TABLE Table1
ADD CONSTRAINT const3 UNIQUE (zip);
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0004¶
Ausschlusseinschränkung wird nicht unterstützt
Schweregrad¶
Medium
Beschreibung¶
Die in PostgreSQL verwendete Ausschlusseinschränkung wird von Snowflake nicht unterstützt.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE TABLE Table1 (
id int,
EXCLUDE USING gist (id WITH &&)
);
Generierter Code:¶
Snowflake¶
CREATE TABLE Table1 (
id int,
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0004 - EXCLUDE CONSTRAINT IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
EXCLUDE USING gist (id WITH &&)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0006¶
Das Referenzieren einer Variablen über das Label wird von Snowflake nicht unterstützt.
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler wird hinzugefügt, wenn der Text eines FOR-Loops eine Variable unter Verwendung des Labels referenziert. Snowflake unterstützt das Referenzieren einer Variable über den qualifizierten Namen nicht.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE procedure1(out result VARCHAR(100))
LANGUAGE plpgsql
AS $$
BEGIN
result := '<';
<<outer_loop>>
for i in 1..3 loop
<<inner_loop>>
for i in 4..6 loop
result := result || '(' || outer_loop.i || ', ' || i || ')';
end loop inner_loop;
end loop outer_loop;
result := result || '>';
END;
$$;
Generierter Code:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE procedure1 (result OUT VARCHAR(100))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
BEGIN
result := '<';
for i in 1 TO 3
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
loop
for i in 4 TO 6
--** SSC-PRF-0008 - PERFORMANCE REVIEW - LOOP USAGE **
loop
result := result || '(' ||
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0006 - REFERENCE TO A VARIABLE USING THE LABEL IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! outer_loop.i || ', ' || i || ')';
end loop inner_loop;
end loop outer_loop;
result := result || '>';
END;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0007¶
„Into“-Klausel von Dynamic SQL wird in Snowflake nicht unterstützt
Schweregrad¶
Niedrig
Beschreibung¶
PostgreSQL Dynamic-SQL erlaubt die INTO-Klausel zum Speichern von Abfrageergebnissen in Variablen. Snowflake unterstützt diese Funktion nicht. Daher ist die INTO-Klausel mit einem EWI gekennzeichnet.
Codebeispiel¶
Eingabecode:¶
PosgreSQL¶
CREATE OR REPLACE PROCEDURE get_max_id(table_name VARCHAR, OUT max_id INTEGER)
AS $$
DECLARE
sql_statement VARCHAR;
BEGIN
sql_statement := 'SELECT MAX(id) FROM ' || table_name || ';';
EXECUTE sql_statement INTO max_id;
END;
$$ LANGUAGE plpgsql;
Generierter Code:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE get_max_id (table_name VARCHAR, max_id OUT INTEGER)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
DECLARE
sql_statement VARCHAR;
BEGIN
sql_statement := 'SELECT MAX(id) FROM ' || table_name || ';';
EXECUTE IMMEDIATE sql_statement
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0007 - INTO CLAUSE IN DYNAMIC SQL IS NOT SUPPORTED IN SNOWFLAKE. ***/!!! INTO max_id;
END;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0008¶
Die Verwendung von „interval“ innerhalb einer „to_char“-Funktion ist nicht mit Snowflake kompatibel.
Schweregrad¶
Hoch
Beschreibung¶
Die Verwendung von intervall innerhalb von to_char zum Konvertieren von Datums-/Uhrzeitdatentypen in Text wird von Snowflake nicht unterstützt.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
SELECT to_char(interval '15h 2m 12s', 'HH24:MI:SS');
Generierter Code:¶
Snowflake¶
SELECT to_char(INTERVAL '15h, 2m, 12s', 'HH24:MI:SS') !!!RESOLVE EWI!!! /*** SSC-EWI-PG0008 - THE USE OF INTERVAL WITHIN TO_CHAR IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!;
Weitere Informationen dazu finden Sie unter
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0009¶
Der Kommentar zu „Typ“ wird von Snowflake nicht unterstützt.
Schweregrad¶
Niedrig
Beschreibung¶
Im ursprünglichen Code gibt es verschiedene Objekte, die Kommentare erhalten können. In Snowflake sind einige dieser Objekte jedoch nicht vorhanden, sodass ihnen keine Kommentare zugewiesen werden können. Der Code zur Behandlung dieser Szenarios ist auskommentiert, um mögliche Fehler zu vermeiden.
Codebeispiel¶
Eingabecode:¶
PostgreSql¶
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
Generierter Code:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0009 - COMMENT ON 'RULE' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!!
COMMENT ON RULE rule_name on TABLE_NAME IS 'this is a comment';
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0010¶
Das Erstellen einer temporären Sequenz wird von Snowflake nicht unterstützt
Schweregrad¶
Niedrig
Beschreibung¶
Wenn in PostgreSQL eine temporäre Sequenz erstellt wird, wird sie nur für die aktive Sitzung erstellt und automatisch gelöscht, wenn Sie sich von der Sitzung abmelden. Diese Funktion ist jedoch in Snowflake nicht verfügbar, sodass sie als normale Sequenz generiert wird. Bei der Ausführung kann ein ähnlicher Sequenzname bereits existieren, was zu einem Fehler bei einem vorhandenen Objekt führt.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE TEMPORARY SEQUENCE sequence1;
CREATE TEMP SEQUENCE sequence2;
Generierter Code:¶
Snowflake¶
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE TEMPORARY !!!RESOLVE EWI!!! /*** SSC-EWI-PG0010 - CREATE TEMPORARY SEQUENCE IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence1;
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE TEMP !!!RESOLVE EWI!!! /*** SSC-EWI-PG0010 - CREATE TEMPORARY SEQUENCE IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence2;
Best Practices¶
Wenn Sie ein Problem mit der Erstellung haben, können Sie versuchen, die Sequenz umzubenennen, um Kollisionen zu vermeiden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0011¶
Die Sequenzoption „option_name“ wird von Snowflake nicht unterstützt.
Schweregrad¶
Niedrig
Beschreibung¶
Einige Optionen, die in PostgreSQL für die Sequenzanweisung verfügbar sind, werden von Snowflake nicht unterstützt.
Folgende Optionen werden nicht unterstützt:
Nicht protokolliert.
AS <data_type>.
MinValue.
MaxValue.
Nein MinValue.
Nein MaxValue.
Cache.
Zyklus.
Eigentümer.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE UNLOGGED SEQUENCE sequence_name;
Generierter Code:¶
Snowflake¶
--** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. **
CREATE UNLOGGED !!!RESOLVE EWI!!! /*** SSC-EWI-PG0011 - 'UNLOGGED' IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! SEQUENCE sequence_name;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0012¶
NOT VALID-Einschränkungsoption wird von Snowflake nicht unterstützt.
Beschreibung¶
Die Option NOT VALID für Constraints wird im Zusammenhang mit dem Hinzufügen oder Ändern einer Einschränkung verwendet und gibt an, dass die Einschränkung hinzugefügt oder geändert werden soll, ohne die vorhandenen Daten auf die Einhaltung der Einschränkung zu überprüfen. Diese Klausel wird von Snowflake nicht unterstützt.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
ALTER TABLE Table1 *
ADD CONSTRAINT const UNIQUE (zip) NOT VALID;
Generierter Code:¶
Snowflake¶
ALTER TABLE Table1
ADD CONSTRAINT const UNIQUE (zip)
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0012 - NOT VALID CONSTRAINT OPTION IS NOT SUPPORTED BY SNOWFLAKE. ***/!!! NOT VALID;
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0014¶
Snowflake Scripting-Cursors unterstützen keine Fetch-Ausrichtung
Schweregrad¶
Medium
Beschreibung¶
In Snowflake ruft die FETCH Cursor-Anweisung immer die nächste Zeile im Cursor ab. Beim Transformieren des Codes wandelt SnowConvert AI Cursor-Ausrichtungen um, die FETCH NEXT entsprechen, da sie in Snowflake funktional gleichwertig sind:
FETCH NEXTFETCH FORWARDFETCH RELATIVE 1FETCH(keine Ausrichtung angegeben)
Jede andere Ausrichtung wird nicht unterstützt, und die FETCH-Anweisung wird mit diesem EWI gekennzeichnet, um dies widerzuspiegeln.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE OR REPLACE PROCEDURE cursor_test()
AS $$
BEGIN
FETCH FORWARD FROM cursor1 INTO my_var;
FETCH FIRST FROM cursor1 INTO my_var;
FETCH LAST FROM cursor1 INTO my_var;
END;
$$;
Generierter Code:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE cursor_test ()
RETURNS VARCHAR
AS $$
BEGIN
FETCH
cursor1 INTO my_var;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0014 - SNOWFLAKE SCRIPTING CURSORS DO NOT SUPPORT FETCH ORIENTATION. ***/!!!
FETCH FIRST FROM cursor1 INTO my_var;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0014 - SNOWFLAKE SCRIPTING CURSORS DO NOT SUPPORT FETCH ORIENTATION. ***/!!!
FETCH LAST FROM cursor1 INTO my_var;
END;
$$;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0015¶
Fetch cursor ohne Zielvariablen wird in Snowflake nicht unterstützt
Schweregrad¶
Medium
Beschreibung¶
In PostgreSQL ist es möglich, eine [FETCH-Anweisung] (https://www.postgresql.org/docs/current/sql-fetch.html) ohne INTO zu verwenden, um die Werte der abgeholten Zeilen auf der Konsole auszugeben. Snowflake erfordert jedoch, dass die FETCH-Anweisung die INTO-Klausel angibt, in der die Variablen definiert sind, in denen die abgeholten Zeilenwerte gespeichert werden.
Immer wenn ein FETCH ohne INTO im Code gefunden wird, erzeugt SnowConvert AI diese EWI, um den Benutzer darauf hinzuweisen, dass diese Art von FETCH nicht unterstützt wird.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
FETCH PRIOR FROM cursor1;
Generierter Code:¶
Snowflake¶
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0015 - FETCH CURSOR WITHOUT TARGET VARIABLES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FETCH PRIOR FROM cursor1;
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-PG0016¶
Bit-Zeichenfolgentyp, der in Varchar-Typ konvertiert wurde
Schweregrad¶
Niedrig
Beschreibung¶
Beim Migrieren von PostgreSQL ist zu beachten, dass dessen BIT-String-Typen und die damit verbundenen Funktionen in Snowflake nicht nativ unterstützt werden. Diese Datentypen werden in den VARCHAR von Snowflake konvertiert. Diese Umwandlung bedeutet, dass alle PostgreSQL-Abfragen oder Anwendungslogiken, die von bitweisen Operationen auf diesen Spalten abhängen, erheblich angepasst werden müssen, um in Snowflake die gleiche Funktionalität zu erreichen.
Codebeispiel¶
Eingabecode:¶
PostgreSQL¶
CREATE TABLE table1 (
col1 bit(10)
);
Generierter Code:¶
Snowflake¶
CREATE TABLE table1 (
col1 CHARACTER(10) !!!RESOLVE EWI!!! /*** SSC-EWI-PG0016 - BIT DATA TYPE CONVERTED TO CHARACTER ***/!!!
);
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.