CREATE SCHEMA
CREATE SCHEMA
현재 데이터베이스에 새 스키마(schema)를 만드는 명령이에요. 스키마는 테이블, 뷰 등 객체를 그룹화하는 데이터베이스 내 컨테이너예요.
출처: 문서
본문
이 명령은 다음 변형(variant)을 지원해요:
- CREATE OR ALTER SCHEMA: 스키마가 없으면 만들고, 있으면 수정합니다.
- CREATE SCHEMA … CLONE: 기존 스키마의 현재 상태 또는 특정 시점(Time Travel 사용)의 복제본을 만듭니다.
- CREATE SCHEMA … FROM BACKUP SET: 백업에서 새 이름으로 스키마를 복원합니다.
구문 (Syntax)
CREATE [ OR REPLACE ] [ TRANSIENT ] SCHEMA [ IF NOT EXISTS ] <name>
[ CLONE <source_schema>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
[ IGNORE TABLES WITH INSUFFICIENT DATA RETENTION ]
[ IGNORE HYBRID TABLES ] ]
[ WITH MANAGED ACCESS ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ EXTERNAL_VOLUME = <external_volume_name> ]
[ CATALOG = <catalog_integration_name> ]
[ ICEBERG_DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ ICEBERG_VERSION_DEFAULT = <integer> ]
[ ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' } ]
[ ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } ]
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
[ CLASSIFICATION_PROFILE = '<classification_profile>' ]
[ COMMENT = '<string_literal>' ]
[ CATALOG_SYNC = '<snowflake_open_catalog_integration_name>' ]
[ OBJECT_VISIBILITY = PRIVILEGED ]
[ ENABLE_DATA_COMPACTION = { TRUE | FALSE } ]
[ OAUTH_AUTHORIZATION_SERVER = <integration_name> ]
[ OAUTH_SCOPES_SUPPORTED = '<comma_separated_scopes>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
백업에서 복원된 스키마:
CREATE SCHEMA <name> FROM BACKUP SET <backup_set> IDENTIFIER '<backup_id>'
CREATE OR ALTER SCHEMA 구문
CREATE OR ALTER [ TRANSIENT ] SCHEMA <name>
[ WITH MANAGED ACCESS ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ EXTERNAL_VOLUME = <external_volume_name> ]
[ CATALOG = <catalog_integration_name> ]
[ ICEBERG_DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ ICEBERG_VERSION_DEFAULT = <integer> ]
[ ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' } ]
[ ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE } ]
[ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ LOG_LEVEL = '<log_level>' ]
[ TRACE_LEVEL = '<trace_level>' ]
[ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
[ COMMENT = '<string_literal>' ]
[ OBJECT_VISIBILITY = PRIVILEGED ]
CREATE SCHEMA … CLONE 구문
CREATE [ OR REPLACE ] SCHEMA [ IF NOT EXISTS ] <name> CLONE <source_schema>
[ ... ]
필수 매개변수
<name>: 스키마의 식별자예요. 생성되는 데이터베이스 내에서 고유해야 해요. 기본 문자로 시작해야 하며, 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요.
선택 매개변수
TRANSIENT: 스키마를 임시(transient)로 지정해요. 임시 스키마는 Fail-safe 기간이 없어 Time Travel을 벗어난 뒤 추가 저장 비용이 들지 않아요. 기본값: 값 없음 (영구).CLONE source_schema: 지정한 소스 스키마의 복제본을 만들어요.AT | BEFORE ( TIMESTAMP | OFFSET | STATEMENT ): 스키마를 복제할 때 Time Travel로 과거 특정 시점에 복제하도록 지정해요.IGNORE TABLES WITH INSUFFICIENT DATA RETENTION: Time Travel에 과거 데이터가 더 이상 없는 테이블은 복제를 건너뛰어요.IGNORE HYBRID TABLES: 하이브리드 테이블은 복제하지 않고 건너뛰어요.WITH MANAGED ACCESS: 관리형 스키마(managed access schema)를 지정해요. 관리형 스키마는 스키마 소유자에게 권한 관리를 중앙화해요. 일반 스키마에서는 객체 소유자가 객체에 대한 권한을 부여할 수 있지만, 관리형 스키마에서는 스키마 소유자가 미래 권한(future grants)을 포함한 모든 권한 부여를 관리해요.DATA_RETENTION_TIME_IN_DAYS = integer: 스키마에 대해 Time Travel 작업(CLONE, UNDROP)을 수행할 수 있는 일 수를 지정해요. Standard:0또는1. Enterprise: 영구 스키마에0~90, 임시 스키마에0또는1. 값0은 Time Travel을 비활성화해요.MAX_DATA_EXTENSION_TIME_IN_DAYS = integer: 스트림이 오래되지 않도록 데이터 보존 기간을 연장할 수 있는 최대 일 수를 지정해요.EXTERNAL_VOLUME = external_volume_name: Apache Iceberg™ 테이블에 사용할 기본 외부 볼륨을 지정해요.CATALOG = catalog_integration_name: Apache Iceberg™ 테이블에 사용할 기본 카탈로그 인티그레이션을 지정해요.ICEBERG_DEFAULT_DDL_COLLATION = 'collation_specification': Snowflake 관리 Iceberg 테이블의 새 문자열 컬럼에 대한 기본 정렬 지정을 지정해요.ICEBERG_VERSION_DEFAULT = integer: Iceberg 테이블이 따르는 사양 버전을 지정해요.2또는3. 기본값:2. (인플레이스 버전 업그레이드는 지원되지 않아요.)DEFAULT_METADATA_WRITE_FORMAT = { SNOWFLAKE | ICEBERG }:CREATE TABLE/ALTER TABLE로 만든 새 테이블의 기본 메타데이터 쓰기 형식을 지정해요. 기본값:SNOWFLAKE.ICEBERG_MERGE_ON_READ_BEHAVIOR = { 'AUTO' | 'ENABLED' | 'DISABLED' }: Iceberg 테이블에서 행 수준 업데이트 수행 방식을 지정해요. 기본값:'AUTO'.ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE }: 사용 중단.ICEBERG_MERGE_ON_READ_BEHAVIOR를 사용하세요. 기본값:TRUE.REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }: Iceberg 테이블 쿼리 결과에서 잘못된 UTF-8 문자를 대체 문자로 바꿀지 지정해요. 외부 카탈로그 테이블에만 설정 가능. 기본값:FALSE.DEFAULT_DDL_COLLATION = 'collation_specification': 스키마에 추가되는 모든 테이블의 기본 정렬 지정을 지정해요.LOG_LEVEL = 'log_level': 활성 이벤트 테이블에 수집할 메시지의 심각도 수준을 지정해요.TRACE_LEVEL = 'trace_level': trace 이벤트 수집 방식을 제어해요.STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }: Snowflake 카탈로그 Iceberg 테이블의 저장소 직렬화 정책을 지정해요. 기본값:OPTIMIZED.CLASSIFICATION_PROFILE = 'classification_profile': 스키마의 민감한 데이터가 자동으로 분류되도록 분류 프로필과 연결해요.COMMENT = 'string_literal': 스키마에 대한 주석을 지정해요.CATALOG_SYNC = 'snowflake_open_catalog_integration_name': Snowflake Open Catalog용 카탈로그 인티그레이션 이름을 지정해요. 지정하면 Snowflake 관리 Iceberg 테이블을 외부 카탈로그와 동기화해요.ENABLE_DATA_COMPACTION = { TRUE | FALSE }: Snowflake 관리 Iceberg 테이블에서 데이터 컴팩션을 활성화할지 지정해요. 기본값:TRUE.OAUTH_AUTHORIZATION_SERVER = integration_name: 이 스키마의 MCP 서버에 대한 인가 서버로 External OAuth 보안 인티그레이션을 지정해요.OAUTH_SCOPES_SUPPORTED = 'comma_separated_scopes': 이 스키마의 MCP 서버에 광고할 OAuth 스코프를 지정해요.WITH CONTACT ( purpose = contact [ , ...] ): 새 객체를 하나 이상의 연락처와 연결해요.TAG ( tag_name = 'tag_value' [ , ... ] ): 태그 이름과 문자열 값을 지정해요. 최대 256자.OBJECT_VISIBILITY = PRIVILEGED: 객체의 가시성을 지정해요.PRIVILEGED는 현재 계정에서 객체에 명시적 권한이 부여된 역할만 볼 수 있어요 (기본 동작).
백업 매개변수
FROM BACKUP SET절은 백업에서 스키마를 복원해요. 복원된 스키마는 백업 원본 스키마와 독립적이에요.FROM SNAPSHOT SET절은 사용 중단됐어요.backup_set: 특정 스키마에 대해 만든 백업 세트 이름.backup_id: 해당 백업 세트 내 특정 백업 식별자.
접근 제어 요구 사항
| 권한 | 객체 | 참고 |
|---|---|---|
| CREATE SCHEMA | 데이터베이스 | 일반 및 관리형 접근 스키마를 모두 만들 수 있어요. |
| CREATE SCHEMA … CLONE … WITH MANAGED ACCESS | 선택 사항 | 소스 스키마가 관리형인지에 따라 필요 권한이 달라져요. 관리형이면 소스 스키마에 대한 OWNERSHIP 필요. |
더 알아보기 (Learn more)
- ALTER SCHEMA
- DESCRIBE SCHEMA
- DROP SCHEMA
- SHOW SCHEMAS
- UNDROP SCHEMA
- CREATE
- 복제 고려 사항, 백업(재해 복구 및 변경 불가 저장소), Time Travel 이해와 사용