SnowConvert AI - Vertica - Vertica와 Snowflake 간의 식별자 차이

따옴표가 있는 식별자

Vertica에서 따옴표가 있는 식별자는 대/소문자 구분 규칙을 준수합니다. 즉, 예를 들어, 열 이름은 따옴표로 묶인 경우에도 여전히 대/소문자를 구분하지 않습니다. 따라서 식별자 "ABC", "ABc""aBc"ABC, ABcaBc와 같은 동의어입니다.

Vertica

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

SELECT "col#1" FROM test.quotedIdentTable;

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

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;
Copy

세션 매개 변수가 TRUE로 설정되어 있지 않으면 두 번째 선택을 실행할 때 실패합니다.

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;
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