다음을 통해 공유


CREATE SCHEMA

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

지정된 이름의 스키마(데이터베이스)를 만듭니다. 이름이 같은 스키마가 이미 있는 경우 예외가 throw됩니다.

구문

CREATE SCHEMA [ IF NOT EXISTS ] schema_name
    [ COMMENT schema_comment |
     { LOCATION schema_directory | MANAGED LOCATION location_path } |
     WITH DBPROPERTIES ( { property_name = property_value } [ , ... ] ) ] [...]

매개 변수

  • schema_name

    만들 스키마의 이름입니다.

    hive_metastore 카탈로그에서 만든 스키마는 영숫자 ASCII 문자와 밑줄(INVALID_SCHEMA_OR_RELATION_NAME)만 포함할 수 있습니다.

  • IF NOT EXISTS

    지정된 이름의 스키마가 없는 경우 스키마를 만듭니다. 이름이 같은 스키마가 이미 있는 경우 아무 작업도 수행되지 않습니다.

  • LOCATION schema_directory

    LOCATION Unity 카탈로그에서 지원되지 않습니다. Unity 카탈로그에서 스키마의 스토리지 위치를 지정하려면 MANAGED LOCATION사용합니다.

    schema_directorySTRING 리터럴입니다. 지정된 스키마를 만들 파일 시스템의 경로입니다. 지정된 경로가 기본 파일 시스템에 존재하지 않는 경우 해당 경로가 있는 디렉터리를 만듭니다. 위치를 지정하지 않으면 기본 웨어하우스 디렉터리에 스키마가 만들어집니다. 이 디렉터리의 경로는 정적 구성 spark.sql.warehouse.dir의해 구성됩니다.

    Warning

    스키마(데이터베이스)가 작업 영역 수준 Hive 메타스토어에 등록된 경우 CASCADE 옵션을 사용하여 해당 스키마를 삭제하면 테이블 형식(관리형 또는 외부)에 관계없이 해당 스키마 위치의 모든 파일이 재귀적으로 삭제됩니다.

    스키마가 Unity 카탈로그 메타스토어에 등록되면 Unity 카탈로그 관리 테이블 파일이 재귀적으로 삭제됩니다. 그러나 외부 테이블에 대한 파일은 삭제되지 않습니다. 클라우드 스토리지 공급자를 사용하여 해당 파일을 직접 관리해야 합니다.

    따라서 실수로 인한 데이터 손실을 방지하기 위해 Hive 메타스토어의 스키마를 기존 데이터가 있는 위치에 등록해서는 안 됩니다. Hive 메타스토어 스키마 또는 Unity 카탈로그 관리 테이블을 포함하는 위치에 새 외부 테이블을 만들 수도 없습니다.

  • 메모 schema_comment

    STRING 리터럴입니다. 스키마에 대한 설명입니다.

  • 관리되는 위치 location_path

    MANAGED LOCATION 선택 사항이며 Unity 카탈로그가 필요합니다. 작업 영역 수준 Hive 또는 타사 메타스토어에 등록된 스키마의 스토리지 위치를 지정하려면 대신 LOCATION 사용합니다.

    location_pathSTRING 리터럴이어야 합니다. 카탈로그 또는 메타스토어의 스토리지 루트 위치와 다른 스키마의 스토리지 루트 위치 경로를 지정합니다. 이 경로는 외부 위치 구성에서 정의되어야 하며 외부 위치 구성에 대한 CREATE MANAGED STORAGE 권한이 있어야 합니다. 외부 위치 구성에 정의된 경로 또는 하위 경로(즉, 'abfss://container@storageaccount.dfs.core.windows.net/finance' 또는 'abfss://container@storageaccount.dfs.core.windows.net/finance/product')를 사용할 수 있습니다. Databricks SQL 또는 Databricks Runtime 11.3 LTS 이상을 실행하는 클러스터에서 지원됩니다.

    관리되는 테이블 작업 및 Unity 카탈로그 메타스토어만들기 참조하세요.

  • WITH DBPROPERTIES ( { property_name = property_value } [ , … ] )

    키-값 쌍에 대한 스키마 속성입니다.

  • OPTIONS

    연결에서 카탈로그를 식별하는 데 필요한 연결 유형별 매개 변수를 설정합니다.

    • option

      옵션 키입니다. 키는 점 또는 리터럴로 구분된 하나 이상의 STRING로 구성될 수 있습니다.

      옵션 키는 고유해야 하며 대/소문자를 구분해야 합니다.

    • value

      옵션의 값입니다. 값은 BOOLEAN, STRING, INTEGER 또는 DECIMAL 상수 식이어야 합니다. 값은 SECRET SQL 함수에 대한 호출일 수도 있습니다. 예를 들어 valuepassword는 리터럴 비밀번호를 입력하는 것과 반대로 secret('secrets.r.us', 'postgresPassword')를 구성할 수 있습니다.

예제

  -- Create schema `customer_sc`. This throws exception if schema with name customer_sc
-- already exists.
> CREATE SCHEMA customer_sc;

-- Create schema `customer_sc` only if schema with same name doesn't exist.
> CREATE SCHEMA IF NOT EXISTS customer_sc;

-- Create schema `customer_sc` only if schema with same name doesn't exist with
-- `Comments`,`Specific Location` and `Database properties`. LOCATION is not supported in Unity Catalog.
> CREATE SCHEMA IF NOT EXISTS customer_sc COMMENT 'This is customer schema' LOCATION '/samplepath'
    WITH DBPROPERTIES (ID=001, Name='John');

-- Create schema with a different managed storage location than the metastore's. MANAGED LOCATION is supported only in Unity Catalog.
> CREATE SCHEMA customer_sc MANAGED LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/finance';

-- Verify that properties are set.
> DESCRIBE SCHEMA EXTENDED customer_sc;
database_description_item database_description_value
------------------------- --------------------------
            Database Name                customer_sc
              Description  This is customer schema
                  Location      hdfs://hacluster/samplepath
                Properties    ((ID,001), (Name,John))