一、描述
ALTER DATABASE语句修改数据库的属性或位置。请注意,DATABASE、SCHEMA和NAMESPACE 的用法是可以互换的,其中一个可以代替另一个。如果在系统中找不到数据库,则会发出错误消息。
二、修改属性
ALTER DATABASE SET DBPROPERTIES语句更改与数据库关联的属性。指定的属性值将覆盖具有相同属性名称的任何现有值。此命令主要用于记录数据库的元数据,也可用于审计目的。
2.1 语法
ALTER { DATABASE | SCHEMA | NAMESPACE } database_name
SET { DBPROPERTIES | PROPERTIES } ( property_name = property_value [ , ... ] )
2.2 参数
- database_name
指定要更改的数据库的名称。
三、修改位置
ALTER DATABASE SET LOCATION语句修改默认父目录,在这里将为数据库添加新表。请注意,它不会将数据库当前目录的内容移动到新指定的位置,也不会更改指定数据库下与任何表/分区相关的位置(从Spark 3.0.0开始,Hive metastore版本3.0.0及更高版本可用)。
3.1 语法
ALTER { DATABASE | SCHEMA | NAMESPACE } database_name
SET LOCATION 'new_location'
3.2 参数
- database_name
指定要更改的数据库的名称。
3.3 例子
-- Creates a database named `inventory`.
CREATE DATABASE inventory;
-- Alters the database to set properties `Edited-by` and `Edit-date`.
ALTER DATABASE inventory SET DBPROPERTIES ('Edited-by' = 'John', 'Edit-date' = '01/01/2001');
-- Verify that properties are set.
DESCRIBE DATABASE EXTENDED inventory;
+-------------------------+------------------------------------------+
|database_description_item| database_description_value|
+-------------------------+------------------------------------------+
| Database Name| inventory|
| Description| |
| Location| file:/temp/spark-warehouse/inventory.db|
| Properties|((Edit-date,01/01/2001), (Edited-by,John))|
+-------------------------+------------------------------------------+
-- Alters the database to set a new location.
ALTER DATABASE inventory SET LOCATION 'file:/temp/spark-warehouse/new_inventory.db';
-- Verify that a new location is set.
DESCRIBE DATABASE EXTENDED inventory;
+-------------------------+-------------------------------------------+
|database_description_item| database_description_value|
+-------------------------+-------------------------------------------+
| Database Name| inventory|
| Description| |
| Location|file:/temp/spark-warehouse/new_inventory.db|
| Properties| ((Edit-date,01/01/2001), (Edited-by,John))|
+-------------------------+-------------------------------------------+