更新时间:2026-07-03 GMT+08:00
分享

修改数据库属性

功能描述

ALTER DATABASE语句用于修改数据库的属性或位置。DATABASE、SCHEMA和NAMESPACE关键字可互换使用。如果数据库不存在,会报错。

语法格式

设置属性

ALTER { DATABASE | SCHEMA | NAMESPACE } database_name
    SET { DBPROPERTIES | PROPERTIES } ( property_name = property_value [, ...] )

删除属性

ALTER { DATABASE | SCHEMA | NAMESPACE } database_name
    UNSET { DBPROPERTIES | PROPERTIES } ( property_name [, ...] )

修改位置

ALTER { DATABASE | SCHEMA | NAMESPACE } database_name
    SET LOCATION 'new_location'

关键字

  • DATABASE / SCHEMA / NAMESPACE:三者等效,可互换使用,建议使用DATABASE。
  • SET DBPROPERTIES / SET PROPERTIES:设置数据库属性,DBPROPERTIES和PROPERTIES等效。
  • UNSET DBPROPERTIES / UNSET PROPERTIES:删除数据库属性。如果指定的属性不存在,命令会忽略并成功执行。
  • SET LOCATION:修改数据库的默认存储位置。

参数说明

表1 参数说明

参数

是否必选

描述

database_name

要修改的数据库名称。

SET DBPROPERTIES / SET PROPERTIES

设置数据库属性。指定的属性值会覆盖同名的已有属性值。主要用于记录数据库的元数据信息。

UNSET DBPROPERTIES / UNSET PROPERTIES

删除数据库属性。如果指定的属性不存在,命令会忽略并成功执行。

property_name

属性名称。

property_value

是(SET时)

属性值。

SET LOCATION

修改数据库的默认存储位置。不会将当前数据库目录中的数据从旧位置移动到新位置,也不影响数据库下已有表/分区的位置。

注意事项

  • 修改数据库位置不会自动迁移已有数据,仅影响后续新建表的默认位置。
  • SET LOCATION的路径需为OBS格式(如obs://bucket-name/path/)。
  • DATABASE、SCHEMA和NAMESPACE关键字可互换使用,建议使用DATABASE。
  • DBPROPERTIES和PROPERTIES关键字可互换使用。
  • 使用DESCRIBE DATABASE EXTENDED可验证属性和位置的修改结果。

示例1:设置数据库属性

创建数据库inventory,并设置属性。

CREATE DATABASE IF NOT EXISTS inventory
  LOCATION 'obs://my-bucket/inventory/';

ALTER DATABASE inventory SET DBPROPERTIES ('Edited-by' = 'John', 'Edit-date' = '01/01/2001');

验证属性:

DESCRIBE DATABASE EXTENDED inventory; 

结果示例:

database_description_item

database_description_value

Database Name

inventory

Location

obs://my-bucket/inventory/

Properties

((Edit-date,01/01/2001), (Edited-by,John))

示例2:修改数据库位置

ALTER DATABASE inventory SET LOCATION 'obs://my-bucket/new-inventory/'; 

验证新位置:

DESCRIBE DATABASE EXTENDED inventory; 

示例3:删除数据库属性

ALTER DATABASE inventory UNSET DBPROPERTIES ('Edited-by'); 

删除不存在的属性时命令会忽略并成功执行:

ALTER DATABASE inventory UNSET DBPROPERTIES ('non-existent'); 

示例4:使用SCHEMA/NAMESPACE关键字

SCHEMA、NAMESPACE与DATABASE等效,可替换使用。

ALTER SCHEMA inventory SET DBPROPERTIES ('Owner' = 'Admin');  
ALTER NAMESPACE inventory SET DBPROPERTIES ('Department' = 'Engineering');

相关文档