ALTER SERVER
功能描述
增加、修改和删除一个现有server的参数。现有server可以从pg_foreign_server系统表查询。
注意事项
除系统管理员外,只有server的owner才可以进行Alter操作。
语法格式
- 修改外部服务的参数。
1 2 |
ALTER SERVER server_name [ VERSION 'new_version' ] [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; |
在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。
对于HDFS Server目前只支持SET操作,ADD/DROP操作现有版本不支持。语法中SET和DROP操作语法依然保留,以便后续扩展使用。
- 修改外部服务的所有者。
1 2 |
ALTER SERVER server_name OWNER TO new_owner; |
- 修改外部服务的名字。
1 2 |
ALTER SERVER server_name RENAME TO new_name; |
参数说明
修改server的参数如下所示:
- server_name
所修改的server的名字。
- new_version
修改后server的新版本名称。
- 修改server所支持的OPTIONS如下所示:
- address
- 对于HDFS server,address必须存在,所以ADD和DROP操作不被允许。
- address目前只支持点分十进制格式的ipv4格式,且address字符串中不能出现空格,多组address以逗号作为分隔符。ip和port之间使用“:”来区分。HDFS集群中ip、port组对推荐设置两组,分别对应HDFS NameNode主备节点的address。
- hdfscfgpath
- 若HDFS走安全模式时,hdfscfgpath是必选项,否则为可选项。
- 若设置hdfscfgpath时,path仅能设置一个。
- encrypt
是否对数据进行加密,该参数仅支持在type为OBS时设置。默认值为off。
取值范围:
- on表示对数据进行加密。
- off表示不对数据进行加密。
- access_key
OBS访问协议对应的AK值(OBS云服务界面由用户获取),创建外表时AK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。
- secret_access_key
OBS访问协议对应的SK值(OBS云服务界面由用户获取),创建外表时SK值会加密保存到数据库的元数据表中。该参数仅支持type为OBS时设置。
- region
- address
- new_owner
修改后server的新拥有者。更改所有者,你必须是外部服务器的所有者并且也是新的所有者角色的直接或者间接成员,并且你必须对外部服务器的外部数据封装器有USAGE权限。
- new_name
修改后server的新名字。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
--建立一个hdfs_server,其中hdfs_fdw为数据库中存在的foreign data wrapper。 CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS (address '10.10.0.100:25000,10.10.0.101:25000', hdfscfgpath '/opt/hadoop_client/HDFS/hadoop/etc/hadoop',type'HDFS'); SELECT * FROM pg_foreign_server WHERE srvname='hdfs_server'; srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions -------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------------------------- ---- hdfs_server | 10 | 13332 | | | | {"address= 10.10.0.100:25000,10.10.0.101:25000",hdfscfgpath=/opt/hadoop_client/HDFS/hadoop/etc/hadoop} (1 row) --修改现有名为hdfs_server的address。 ALTER SERVER hdfs_server OPTIONS ( SET address '10.10.0.110:25000,10.10.0.120:25000'); SELECT * FROM pg_foreign_server WHERE srvname='hdfs_server'; srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions -------------+----------+--------+---------+------------+--------+------------------------------------------------------------------------------------------------------- hdfs_server | 10 | 13167 | | | | {"address=10.10.0.110:25000,10.10.0.120:25000",hdfscfgpath=/opt/hadoop_client/HDFS/hadoop/etc/hadoop} (1 row) --修改现有名为hdfs_server的hdfscfgpath。 ALTER SERVER hdfs_server OPTIONS ( SET hdfscfgpath '/opt/bigdata/hadoop'); SELECT * FROM pg_foreign_server WHERE srvname='hdfs_server'; srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions -------------+----------+--------+---------+------------+--------+--------------------------------------------------------------------------------- hdfs_server | 10 | 13332 | | | | {"address=10.10.0.110:25000,10.10.0.120:25000",hdfscfgpath=/opt/bigdata/hadoop} (1 row) --删除hdfs_server。 DROP SERVER hdfs_server; |