Snowflake에서 PostgreSQL 데이터 보기¶
참고
Snowflake Connector for PostgreSQL 에는 커넥터 약관 이 적용됩니다.
커넥터는 커넥터를 설정하고 PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>')
를 호출하는 동안 정의된 대상 데이터베이스에 데이터를 복제합니다.
데이터 테이블은 복제된 데이터를 포함하며 식별자 dest_db.schema_name.table_name
으로 제공됩니다. 여기서
dest_db
는 대상 데이터베이스의 이름입니다.schema_name
은 원래 PostgreSQL 테이블이 있는 스키마 이름입니다.table_name
은 원본 PostgreSQL 테이블의 이름입니다.
참고
dest_db
, schema_name
, table_name
은 이름에 대/소문자가 혼합된 경우 큰따옴표로 묶어야 합니다.
복제된 테이블에는 추가 메타데이터 열이 포함됩니다.
열 이름 |
데이터 타입 |
설명 |
---|---|---|
|
TIMESTAMP_NTZ |
행이 대상 테이블에 삽입된 시간의 타임스탬프(UTC)입니다. |
|
TIMESTAMP_NTZ |
대상 테이블에서 행이 마지막으로 업데이트된 시간의 타임스탬프(UTC)입니다. |
|
BOOLEAN |
행이 원본 테이블에서 삭제된 경우 값은 |
복제된 데이터 타입은 Snowflake 타입과 일치하도록 매핑됩니다. 자세한 내용은 PostgreSQL을 Snowflake 데이터 타입으로 매핑 섹션을 참조하십시오.
복제된 데이터 액세스 제어¶
복제된 데이터에 대한 액세스를 제어하려면 DATA_READER
애플리케이션 역할을 사용합니다. 커넥터 애플리케이션 역할에 대한 자세한 내용은 Snowflake Connector for PostgreSQL 에서의 애플리케이션 역할 섹션을 참조하십시오. 특정 대상 오브젝트를 보다 세부적으로 제어하려면 ACCOUNTADMIN
역할을 사용하여 적절한 권한을 부여하거나 데이터베이스 역할을 만드십시오.
PostgreSQL을 Snowflake 데이터 타입으로 매핑¶
Snowflake에서는 복제된 테이블의 열 이름이 대문자로 시작되고 타입은 Snowflake 타입과 일치하도록 매핑됩니다.
다음 표에서는 PostgreSQL을 Snowflake 타입으로 매핑하는 것을 보여줍니다.
PostgreSQL 형식 |
Snowflake 유형 |
참고 |
---|---|---|
BIGINT / INT8 |
INT |
|
BIGSERIAL / SERIAL8 |
INT |
|
BIT [(N)] |
VARCHAR |
|
BIT VARYING [(N)] / VARBIT [(n)] |
VARCHAR |
|
BOOLEAN / BOOL |
BOOLEAN |
|
BOX |
VARCHAR |
|
BYTEA |
BINARY(N) |
Snowflake의 최대 데이터 요소 크기(16MB)까지 지원됩니다. 최대 길이 1GB. |
CHARACTER [(N)] / CHAR [(N)] |
VARCHAR [N] |
최대 길이 10485760 ~= 10MB |
CHARACTER VARYING [(N)] / VARCHAR [(N)] |
VARCHAR [N] |
최대 길이 10485760 ~= 10MB |
CIDR |
VARCHAR |
|
CIRCLE |
VARCHAR |
|
DATE |
DATE |
|
DOUBLE PRECISION / FLOAT8 |
FLOAT |
|
INET |
VARCHAR |
|
INTEGER / INT / INT4 |
INT |
|
INTERVAL [FIELDS][(P)] |
VARCHAR |
|
JSON |
VARIANT |
Snowflake의 최대 데이터 요소 크기(16MB)까지 지원됩니다. |
JSONB |
VARIANT |
Snowflake의 최대 데이터 요소 크기(16MB)까지 지원됩니다. |
LINE |
VARCHAR |
|
LSEG |
VARCHAR |
|
MACADDR |
VARCHAR |
|
MACADDR8 |
VARCHAR |
|
MONEY |
VARIANT |
|
NUMERIC [(P, S)] / DECIMAL [(P, S)] |
DECIMAL(P, S) |
Snowflake 제한을 유지하면서 Snowflake 측에서 소수 자릿수와 전체 자릿수도 다시 생성됩니다. |
PATH |
VARCHAR |
|
PG_LNS |
VARCHAR |
|
POINT |
VARCHAR |
|
POLYGON |
VARCHAR |
|
REAL / FLOAT4 |
FLOAT |
|
SMALLINT / INT2 |
INT |
|
SMALLSERIAL / SERIAL2 |
INT |
|
SERIAL / SERIAL4 |
INT |
|
TEXT |
VARCHAR |
|
TIME [(P)] [타임존 없음] |
TIME |
|
TIME [(P)], 타임존 포함 |
TIME |
|
TIMESTAMP [(P)] [타임존 없음] |
DATETIME / TIMESTAMP_NTZ |
|
TIMESTAMP [(P)], 타임존 포함 |
TIMESTAMP_TZ |
|
TSQUERY |
VARCHAR |
|
TSVECTOR |
VARCHAR |
|
UUID |
VARCHAR |
|
XML |
VARCHAR |
배열, ENUM, 사용자 지정 타입, 범위를 포함한 다른 모든 타입은 Snowflake의 VARCHAR 값에 매핑됩니다. 다음 표에서는 위 표에 명시적으로 언급되지 않은 타입의 처리 방식을 보여줍니다.
PostgreSQL 형식 |
PostgreSQL의 데이터 |
Snowflake의 열 |
---|---|---|
ENUM |
월요일 |
“monday” |
INTEGER의 배열 |
{1,2,3,5} |
“{1,2,3,5}” |
intrange |
[6,31) |
“[6,31)” |
사용자 지정 타입(INT4 및 TEXT의 2개 필드) |
(텍스트 값,5432) |
“(텍스트 값,5432)” |
삭제된 열의 데이터 보기¶
원본 테이블에서는 열이 삭제되어도 대상 테이블에서는 삭제되지 않습니다. 대신 소프트 삭제 접근 방식을 따르고 열 이름이 <이전 이름>__SNOWFLAKE_DELETED
으로 바뀌어 이전 값을 계속 쿼리할 수 있습니다.
예를 들어, 열 A
가 삭제되면 대상 테이블에서 해당 열의 이름이 A__SNOWFLAKE_DELETED
로 바뀌고 다음과 같이 쿼리할 수 있습니다.
SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
이름이 바뀐 열의 데이터 보기¶
열 이름을 바꾸는 것은 열을 삭제하고 새 이름을 가진 새로운 열을 만드는 것과 같습니다. 삭제는 이전 섹션에서 설명한 소프트 삭제 접근 방식을 따릅니다.
예를 들어, 열 A
의 이름이 B
로 바뀐 경우 대상 테이블에서 A
는 A__SNOWFLAKE_DELETED
로 이름이 바뀌고 열 B
가 새로 추가됩니다. 변경 전에 존재한 행은 전부 A__SNOWFLAKE_DELETED
열에서 해당 열의 값을 유지하는 반면, 변경 후에 새로 추가된 행에는 B
열의 값이 있습니다. 이름이 바뀐 열의 값은 다음의 간단한 쿼리를 사용해 단일 열로 볼 수 있습니다.
SELECT
CASE WHEN B IS NULL THEN A__SNOWFLAKE_DELETED ELSE B END AS A_RENAMED_TO_B
FROM <TABLE_WITH_RENAMED_COLUMN>;
열 이름을 바꾼 후 간편하게 사용할 수 있도록 뷰를 생성할 수 있습니다.
다음 단계¶
이러한 절차를 완료한 후 Snowflake Connector for PostgreSQL 에서 진행 중인 작업 에서 프로세스를 검토해 보십시오.