Freigeben über


CREATE SCHEMA

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL Häkchen gesetzt ja Databricks Runtime

Erstellt ein Schema (Datenbank) mit dem angegebenen Namen. Wenn bereits ein Schema mit demselben Namen vorhanden ist, wird eine Ausnahme ausgelöst.

Syntax

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

Parameter

  • schema_name

    Der Name des zu erstellenden Schemas.

    Im hive_metastore-Katalog erstellte Schemas dürfen nur alphanumerische ASCII-Zeichen und Unterstriche enthalten (INVALID_SCHEMA_OR_RELATION_NAME).

  • IF NOT EXISTS

    Erstellt einen Katalog mit dem angegebenen Namen, sofern dieser noch nicht vorhanden ist. Wenn bereits ein Schema mit demselben Namen vorhanden ist, geschieht nichts.

  • LOCATION schema_directory

    LOCATION wird in Unity Catalog nicht unterstützt. Wenn Sie einen Speicherort für ein Schema in Unity Catalog angeben möchten, verwenden Sie MANAGED LOCATION.

    schema_directory ist ein STRING-Literal. Der Pfad des Dateisystems, in dem das angegebene Schema erstellt werden soll. Wenn der angegebene Pfad im zugrunde liegenden Dateisystem nicht vorhanden ist, wird ein Verzeichnis mit dem Pfad erstellt. Wenn der Speicherort nicht angegeben wird, wird das Schema im standardmäßigen Warehouse-Verzeichnis erstellt, dessen Pfad in der statischen Konfiguration spark.sql.warehouse.dir festgelegt ist.

    Warnung

    Wenn ein Schema (Datenbank) in Ihrem Hive-Metastore auf Arbeitsbereichsebene registriert ist, führt das Löschen dieses Schemas mithilfe der Option CASCADE dazu, dass alle Dateien an diesem Schemaspeicherort rekursiv gelöscht werden, unabhängig vom Tabellentyp (verwaltet oder extern).

    Wenn das Schema in einem Unity Catalog-Metastore registriert ist, werden die Dateien für verwaltete Unity Catalog-Tabellen rekursiv gelöscht. Die Dateien für externe Tabellen werden jedoch nicht gelöscht. Sie müssen diese Dateien direkt mithilde des Cloudspeicheranbieters verwalten.

    Um versehentlichen Datenverlust zu vermeiden, sollten Sie daher niemals ein Schema in einem Hive-Metastore an einem Speicherort mit vorhandenen Daten registrieren. Sie sollten auch keine neuen externen Tabellen an einem Speicherort erstellen, der von Hive-Metastore-Schemas verwaltet wird oder verwaltete Unity Catalog-Tabellen enthält.

  • KOMMENTAR schema_comment

    Ein STRING-Literal. Beschreibung für das Schema.

  • MANAGED LOCATION location_path

    MANAGED LOCATION ist optional und erfordert Unity Catalog. Wenn Sie einen Speicherort für ein Schema angeben möchten, das in Ihrem Hive- oder Drittanbieter-Metastore auf Arbeitsbereichsebene registriert ist, verwenden Sie stattdessen LOCATION .

    location_path muss ein STRING-Literal sein. Gibt den Pfad zu einem Stammspeicherort für das Schema an, der sich vom Stammspeicherort des Katalogs oder Metastores unterscheidet. Der Pfad muss in einer Konfiguration mit einem externen Speicherort definiert werden, und Sie müssen über die Berechtigung CREATE MANAGED STORAGE für die Konfiguration des externen Speicherorts verfügen. Sie können den Pfad verwenden, der in der Konfiguration des externen Speicherorts definiert ist, oder einen Unterpfad (mit anderen Worten, 'abfss://container@storageaccount.dfs.core.windows.net/finance' oder 'abfss://container@storageaccount.dfs.core.windows.net/finance/product'). Unterstützt in Databricks SQL oder auf Clustern, auf denen Databricks Runtime 11.3 und höher ausgeführt wird.

    Weitere Informationen finden Sie unter Arbeiten mit verwalteten Tabellen und Erstellen eines Unity Catalog-Metastore.

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

    Die Eigenschaften des Schemas in Schlüssel-Wert-Paaren.

  • OPTIONS

    Legt verbindungstypspezifische Parameter fest, die zum Identifizieren des Katalogs bei der Verbindung erforderlich sind.

    • option

      Der Optionsschlüssel. Der Schlüssel kann aus einem oder mehreren Bezeichnern bestehen, die durch einen Punkt oder ein STRING-Literal getrennt sind.

      Optionsschlüssel müssen eindeutig sein, und die Groß-/Kleinschreibung muss beachtet werden.

    • value

      Der Wert für die Option. Der Wert muss ein konstanter Ausdruck vom Typ BOOLEAN, STRING, INTEGER oder DECIMAL sein. Der Wert kann auch ein Aufruf der SQL-Funktion SECRET sein. Beispielsweise kann value für password anstelle der Eingabe des Literalkennworts secret('secrets.r.us', 'postgresPassword') enthalten.

Beispiele

-- 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))