適用於:
Databricks SQL
Databricks Runtime
建立具有指定名稱結構描述 (資料庫)。 如果已經有相同名稱的結構描述存在,則會擲回例外狀況。
語法
CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ COMMENT schema_comment |
DEFAULT COLLATION default_collation_name |
{ LOCATION schema_directory | MANAGED LOCATION location_path } |
WITH DBPROPERTIES ( { property_name = property_value } [ , ... ] ) ] [...]
參數
-
要建立的結構描述的名稱。
在
hive_metastore目錄中建立的結構描述只能包含英數字元 ASCII 字元和底線 (INVALID_SCHEMA_OR_RELATION_NAME)。 若不存在
如果結構描述不存在,則建立具有指定名稱的結構描述。 如果具有相同名稱的結構描述已經存在,則不會發生任何動作。
位置
schema_directoryUnity 目錄中不支援
LOCATION。 如果您要在 Unity 目錄中指定結構描述的儲存位置,請使用MANAGED LOCATION。schema_directory是STRING常值。 要在其中建立指定結構描述之檔案系統的路徑。 如果基礎檔案系統中沒有指定的路徑,請建立具有路徑的目錄。 如果未指定位置,則會在預設倉儲目錄中建立結構描述,其路徑由靜態組態spark.sql.warehouse.dir所設定。警告
如果在工作區層級的 Hive 中繼存放區中註冊某個資料庫架構,使用 [
CASCADE] 選項刪除該架構將導致該架構位置中的所有檔案被遞歸式刪除,無論其資料表類型是受管理還是外部。如果架構註冊至 Unity 目錄中繼存放區,則會以遞歸方式刪除 Unity Catalog Managed 數據表的檔案。 不過,不會刪除 外部數據表 的檔案。 您必須直接使用雲端儲存體提供者來管理這些檔案。
因此,為了避免意外遺失資料,您絕對不應該將架構註冊到已有資料的 Hive 中繼存放區。 您也不應該在 Hive 中繼存放區架構或包含 Unity 目錄受控數據表的位置中建立新的外部數據表。
註解
schema_commentSTRING常值。 結構描述的描述。-
適用於:
Databricks SQL
Databricks Runtime 17.1 和更新版本選擇性地定義結構描述內定義物件的預設排序規則。 如果未指定,則預設的排序規則會繼承自資料集。
管理的位置
location_pathMANAGED 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 和更新版本之叢集上受支援。另請參閱 適用於 Delta Lake 和 Apache Iceberg 的 Azure Databricks 中的 Unity 目錄受控數據表 和 建立 Unity 目錄中繼存放區。
WITH DBPROPERTIES ( { property_name = property_value } [, …] )
索引鍵/值組中結構描述的屬性。
選項
設定連線時識別目錄所需的連線類型特定參數。
範例
-- 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 `experimental` with a case insensitive unicode default collation
> CREATE SCHEMA experimental DEFAULT COLLATION UNICODE_CI;
-- 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))