SnowConvert AI - Vertica - Différences d’identificateurs entre Vertica et Snowflake

Identificateurs avec guillemets

Dans Vertica, les identificateurs entre guillemets respectent les règles de sensibilité à la casse, ce qui signifie que, par exemple, les noms de colonnes sont toujours insensibles à la casse, même lorsqu’ils sont entre guillemets. Ainsi, les identificateurs « ABC », « ABc » et « aBc » sont synonymes, comme le sont ABC, ABc et aBc :

Vertica

CREATE TABLE test.quotedIdentTable
(
  "col#1" INTEGER
);

SELECT "col#1" FROM test.quotedIdentTable;

SELECT "COL#1" FROM test.quotedIdentTable;
Copy

Dans Snowflake, la sensibilité à la casse des identificateurs entre guillemets dépend du paramètre de session QUOTED_IDENTIFIERS_IGNORE_CASE. Par défaut, la comparaison des identificateurs entre guillemets est sensible à la casse. Cela signifie que le code de résultat de la migration de l’exemple ci-dessus :

Snowflake

CREATE TABLE test.quotedIdentTable
(
  "col#1" INTEGER
);

SELECT
  "col#1"
FROM
  test.quotedIdentTable;

SELECT
  "COL#1"
FROM
  test.quotedIdentTable;
Copy

Échouera lors de l’exécution de la deuxième sélection, à moins que le paramètre de session ne soit défini sur TRUE.

Comment SnowConvert AI migre les identificateurs entre guillemets

SnowConvert AI analysera les identificateurs entre guillemets pour déterminer s’ils contiennent des caractères non alphanumériques ou s’ils correspondent à des mots réservés dans Snowflake. Le cas échéant, SnowConvert AI les laissera tels quels. Les identificateurs alphanumériques resteront sans guillemets :

Vertica

CREATE TABLE test.identsTable1
(
  "col#1" INTEGER,
  "col2" INTEGER
);

-- Group is a reserved word
SELECT 
"col#1" AS "group",
"col2" AS "hello"
FROM
test.identsTable1;
Copy

Snowflake

CREATE TABLE test.identsTable1
(
  "col#1" INTEGER,
  col2 INTEGER
);

-- Group is a reserved word
SELECT
  "col#1" AS "group",
  col2 AS hello
FROM
  test.identsTable1;
Copy