CREATE SCHEMA

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks 런타임

지정된 이름으로 스키마(데이터베이스)를 만듭니다. 동일한 이름의 스키마가 이미 있는 경우 예외가 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_directory 는 리터럴입니다 STRING . 지정된 스키마를 만들 파일 시스템의 경로입니다. 지정된 경로가 기본 파일 시스템에 존재하지 않는 경우 해당 경로가 있는 디렉터리를 만듭니다. 위치가 지정되지 않은 경우 스키마는 기본 웨어하우스 디렉터리에 작성되며 이 디렉터리의 경로는 정적 구성 spark.sql.warehouse.dir에 의해 구성됩니다.

    Warning

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

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

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

  • schema_comment

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

  • 관리되는 위치 location_path

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

    location_path 은 리터럴이어야 STRING 합니다. 카탈로그 또는 메타스토어의 스토리지 루트 위치와 다른 스키마의 스토리지 루트 위치 경로를 지정합니다. 이 경로는 외부 위치 구성에서 정의되어야 하며 외부 위치 구성에 대한 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

      옵션의 값입니다. 값은 , STRING, INTEGER또는 DECIMAL 상수 식이어야 합니다BOOLEAN. 값은 SQL 함수에 대한 SECRET 호출일 수도 있습니다. 예를 들어 for passwordvalue 리터럴 암호를 입력하는 것과 반대로 구성 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))