ALTER STAGE

语法说明

ALTER STAGE 用于修改现有已命名的内部或外部阶段的属性。

Note

集群管理员(即 root 用户)和租户管理员可以修改数据阶段。

语法结构

1. > ALTER STAGE [ IF EXISTS ] { stage_name }
2. { StageParams }
3. [ directoryTableParams ]
4. [ COMMENT = '<string_literal>' ]

6. StageParams (for Amazon S3) :
7. URL =  "endpoint"='<string>' CREDENTIALS = {"access_key_id"='<string>', "secret_access_key"='<string>'}

9. StageParams (for Aliyun OSS) :
10. URL =  "endpoint"='<string>' CREDENTIALS = {"access_key_id"='<string>', "secret_access_key"='<string>'}

12. StageParams (for File System) :
13. URL= 'filepath'

15. directoryTableParams :
16. ENABLE = { TRUE | FALSE }

语法解释

  • IF EXISTS:可选参数,用于在修改 Stage 时检查是否已存在要修改的 Stage。
  • stage_name:要修改的 Stage 的名称。
  • StageParams:这是一个参数组,用于指定 Stage 的配置参数。

  • endpoint:Stage 的连接 URL,指定对象存储服务的位置。对于不同的对象存储服务(如 Amazon S3、Aliyun OSS、文件系统等),这个 URL 的内容可能有所不同。例如:s3.us-west-2.amazonaws.com

  • CREDENTIALS:这是一个 JSON 对象,包含连接到对象存储服务所需的凭证信息,如 access_key_id、secret_access_key 等。
  • directoryTableParams:这是一个参数组,用于指定 Stage 的目录表(directory table)的配置。

  • ENABLE:是否修改启用目录表,值为 TRUE 或 FALSE。

示例

1. CREATE TABLE `user` (`id` int(11) ,`user_name` varchar(255) ,`sex` varchar(255));
2. INSERT INTO user(id,user_name,sex) values('1', 'weder', 'man'), ('2', 'tom', 'man'), ('3', 'wederTom', 'man');

4. -- 创建内部数据阶段
5. mysql> CREATE STAGE stage1 URL='/tmp' ENABLE = TRUE;

7. -- 将数据从表导出到数据阶段
8. mysql> SELECT * FROM user INTO OUTFILE 'stage1:/user.csv';
9. -- 你可以在你本地目录下看到你导出的表

11. mysql> SHOW STAGES;
12. +------------+-----------------------------+---------+---------+
13. | STAGE_NAME | URL                         | STATUS  | COMMENT |
14. +------------+-----------------------------+---------+---------+
15. | stage1     | /Users/Prinz/03testrepo/csv | ENABLED |         |
16. +------------+-----------------------------+---------+---------+
17. 1 row in set (0.01 sec)

19. -- 修改 stage
20. mysql> ALTER STAGE stage1 SET COMMENT 'user stage';

22. mysql> SHOW STAGES;
23. +------------+-----------------------------+---------+------------+
24. | STAGE_NAME | URL                         | STATUS  | COMMENT    |
25. +------------+-----------------------------+---------+------------+
26. | stage1     | /Users/Prinz/03testrepo/csv | ENABLED | user stage |
27. +------------+-----------------------------+---------+------------+
28. 1 row in set (0.00 sec)

30. -- 禁用名为 'stage1' 的数据阶段
31. mysql> ALTER STAGE stage1 SET ENABLE = FALSE;
32. Query OK, 0 rows affected (0.00 sec)

34. -- 尝试将 user 表的数据导出到名为 'stage1:/user.csv' 的数据阶段中,但 stage1 已经被禁用,所以已不可用,产生报错
35. mysql> SELECT * FROM user INTO OUTFILE 'stage1:/user.csv';
36. ERROR 20101 (HY000): internal error: stage 'stage1' is invalid, please check