SnowConvert AI - Vertica - VerticaとSnowflakeの識別子の違い¶
引用符で囲まれている識別子¶
Verticaでは、引用符で囲まれた識別子は 大文字と小文字の区別のルール に従います。つまり、たとえば列名は引用符で囲まれても大文字と小文字は区別されません。したがって、識別子 "ABC" 、 "ABc" および "aBc" は、 ABC 、 ABc および aBc と同義です。
Vertica¶
CREATE TABLE test.quotedIdentTable
(
"col#1" INTEGER
);
SELECT "col#1" FROM test.quotedIdentTable;
SELECT "COL#1" FROM test.quotedIdentTable;
Snowflakeでは、引用符で囲まれた識別子の大文字と小文字の区別はセッションパラメーター QUOTED_IDENTIFIERS_IGNORE_CASE に依存します。デフォルトでは、引用符で囲まれた識別子の比較で大文字と小文字が区別されます。つまり、上記の例を移行した場合の結果コードは次のようになります。
Snowflake¶
CREATE TABLE test.quotedIdentTable
(
"col#1" INTEGER
);
SELECT
"col#1"
FROM
test.quotedIdentTable;
SELECT
"COL#1"
FROM
test.quotedIdentTable;
セッションパラメーターが TRUE に設定されていない限り、2番目の選択を実行すると失敗します。
SnowConvert AI が引用符付き識別子を移行する方法¶
SnowConvert AI は引用符で囲まれた識別子を分析し、英数字以外の文字が含まれているか、Snowflakeの予約語であるかどうかを判断します。含まれている場合、 SnowConvert AI はそれらをそのままにし、英数字の識別子は引用符で囲まれません。
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;
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;