CREATE SCHEMA

適用対象:check marked yes Databricks SQL check marked yes Databricks Runtime 9.1 以上

指定した名前でスキーマ (データベース) を作成します。 同じ名前のスキーマが既に存在する場合は、例外がスローされます。

構文

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

    作成するスキーマの名前。

  • IF NOT EXISTS

    指定した名前のスキーマが存在しない場合は、作成します。 同じ名前のスキーマが既に存在する場合は、何も行いません。

  • LOCATION schema_directory

    LOCATIONは、Unity Catalog ではサポートされていません。 Unity Catalog でスキーマの保存場所を指定する場合は、MANAGED LOCATION を使用します。

    schema_directory は、STRING リテラルを指定します。 指定したスキーマの作成先となるファイル システムのパス。 指定したパスが基になるファイル システムに存在しない場合は、そのパスでディレクトリを作成します。 場所を指定しない場合、スキーマの作成先は既定のウェアハウス ディレクトリとなり、そのパスは、静的構成 spark.sql.warehouse.dir で設定されます。

    警告

    スキーマ (データベース) がワークスペース レベルの Hive メタストアに登録されている場合、CASCADE オプションを使用してそのスキーマを削除すると、テーブルの種類 (マネージドまたは外部) に関係なく、そのスキーマの場所にあるすべてのファイルが再帰的に削除されます。

    スキーマが Unity Catalog メタストアに登録されている場合、Unity Catalog マネージド テーブルのファイルは再帰的に削除されます。 ただし、外部テーブルのファイルは削除されません。 これらのファイルを、クラウド ストレージ プロバイダーを使用して直接管理する必要があります。

    そのため、誤ってデータが失われるのを防ぐために、Hive メタストア内のスキーマを既存のデータを含む場所に登録しないでください。 また、Hive メタストア スキーマによって管理される場所、または Unity Catalog マネージド テーブルを含む場所に新しい外部テーブルを作成する必要もありません。

  • schema_comment

    STRING リテラル。 スキーマの説明。

  • MANAGED LOCATION location_path

    MANAGED LOCATION は省略可能であり、Unity Catalog が必要です。 ワークスペースレベルの 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 以降を実行しているクラスターでサポートされます。

    マネージド テーブル」と「Unity Catalog メタストアを作成する」も参照してください。

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

    スキーマのプロパティ。キーと値のペアで指定します。

  • OPTIONS

    接続でカタログを識別するために必要な接続の種類固有のパラメータを設定します。

    • option

      オプション キー。 キーは、ドットで区切られた 1 つまたは複数の識別子、あるいは STRING リテラルで構成できます。

      オプション キーは一意である必要があり、大文字と小文字が区別されます。

    • value

      オプションの値。 値は、BOOLEANSTRINGINTEGER、または DECIMAL 定数式である必要があります。 値は、SQL 関数の SECRET 呼び出しである場合もあります。 たとえば、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))