在Hologres中,您可以通过配置Foreign Server(外部服务器)来指定外部数据源(OSS)的连接信息,进而创建外部表,实现跨系统的数据访问与查询。本文将为您介绍如何利用HoloWeb可视化工具创建外部服务器以及管理外部表,并进行数据预览。
前提条件
使用限制
Hologres不支持跨地域查询外部表数据。
创建Foreign Server
在Hologres中,Foreign Server(外部服务器)用于指定通过foreign-data wrapper访问外部数据源(如对象存储OSS)的连接信息,以便实现跨系统数据访问和查询。您也可以通过用户映射指定特定用户的连接信息,更多信息请参见创建外部服务器。
在顶部菜单栏左侧,选择相应的地域。
在左侧导航栏选择实例列表,单击目标实例操作列的数据湖加速,以开启数据湖加速能力。
单击前往HoloWeb,进入HoloWeb开发页面。
登录目标数据库后,在顶部菜单栏单击元数据管理 。
在元数据管理页面,单击
。参数说明如下:
参数
描述
Server Name
外部服务器的名称。
重要外部服务器名称必须在数据库中保持唯一。
DLF EndPoint
默认为当前地域的DLF Endpoint,详情请参见已开通的地域和访问域名。
DLF Catalog
在下拉列表中选择已创建的DLF Catalog名称,若下拉列表为空,可单击前往DLF控制台进行创建。
OSS EndPoint
默认为当前地域的原生OSS Endpoint,OSS-HDFS Endpoint可在下拉列表中选择。若未创建OSS Bucket,可单击前往OSS控制台进行创建。
说明OSS Endpoint:可通过OSS地域和访问域名获取。
OSS-HDFS Endpoint:可以在OSS控制台中,已开通OSS-HDFS服务的Bucket概览页获取。
单击提交,完成Foreign Server的创建。
创建外部表
在顶部菜单栏左侧,选择相应的地域。
单击前往HoloWeb,进入HoloWeb开发页面。
在HoloWeb顶部菜单栏单击元数据管理 。
在元数据管理页面,单击
。您可根据需要选择加速方式为整库加速、部分加速或单表加速,参数说明如下:
整库加速
类别
参数名
描述
加速方式
整库加速
将DLF指定数据库下的表全量创建为Hologres外部表。
DLF数据源
Server Name
已创建的Foreign Server,用于指定外部数据源的连接信息。
DB Name
Foreign Server中指定DLF Catalog下的数据库名称。
目标位置
Holo Schema
默认为public,可在下拉列表中选择有权限的其他Schema。
高级选项
表名冲突
创建表时,如果数据库中已存在当前创建的表名称,您可以根据需要选择如下处理方式:
忽略,继续创建其他表:忽略当前创建的表,继续创建其他表。
更新,修改同名表:更新已有表的数据。
报错,不再重复创建:产生报错,不再重复创建。
数据类型不支持
创建表时,如果存在不支持的数据类型,您可根据需要选择如下处理方式:
报错,导入失败:产生报错,数据导入失败。
忽略,跳过不支持字段所在表:忽略不支持字段所在的表,继续导入数据。
部分加速
类别
参数名
描述
加速方式
部分加速
支持选择部分表来创建外部表,可通过表名模糊搜索。
DLF数据源
Server Name
已创建的Foreign Server,用于指定外部数据源的连接信息。
DB Name
Foreign Server中指定DLF Catalog下的数据库名称。
目标位置
Holo Schema
默认为public,可在下拉列表中选择有权限的其他Schema。
高级选项
表名冲突
创建表时,如果数据库中已存在当前创建的表名称,您可以根据需要选择如下处理方式:
忽略,继续创建其他表:忽略当前创建的表,继续创建其他表。
更新,修改同名表:更新已有表的数据。
报错,不再重复创建:产生报错,不再重复创建。
数据类型不支持
创建表时,如果存在不支持的数据类型,您可根据需要选择如下处理方式:
报错,导入失败:产生报错,数据导入失败。
忽略,跳过不支持字段所在表:忽略不支持字段所在的表,继续导入数据。
搜索
通过表名模糊搜索目标表进行勾选。
单表加速
类别
参数名
描述
加速方式
单表加速
给指定的某一张表创建Hologres外部表。
DLF数据源
Server Name
已创建的Foreign Server,用于指定外部数据源的连接信息。
DB Name
Foreign Server中指定DLF Catalog下的数据库名称。
Table Name
DLF数据库中创建的表名。
Hologres目标表
Schema
默认为public,可在下拉列表中选择有权限的其他Schema。
表名
新建的Hologres外部表名称。
说明输入目标DLF表名后,将会自动填入DLF表名,如您需要修改表名,可以重命名。
目标表描述
新建的Hologres外部表描述,可自定义修改。
单击提交,即可在左侧对应模式下,刷新出新建的外部表。
可选)您可鼠标双击已创建的外部表,单击查询表,进入SQL查询窗口,使用标准的PostgreSQL语言进行开发。
说明输入表名称后,会显示外部源表的所有字段,创建外部表时也将默认创建所有字段。如果您需要创建部分字段,请使用单表加速或SQL语句创建外部表,使用SQL创建外部表的方式请参见CREATE FOREIGN TABLE。
Foreign Server更多操作(SQL方式)
创建成功后,您可通过SQL语句对已创建的Foreign Server进行查看、修改及删除,语法如下:
查看已创建的Foreign Server
SELECT * FROM pg_foreign_server;
修改Foreign Server的DLF Catalog
ALTER SERVER <foreignserver_name> OPTIONS (ADD|SET|DROP dlf_catalog ['<catalog_name>']) ;
参数说明如下:
参数
描述
foreignserver_name
待修改的Foreign Server名称。
ADD
为Foreign Server添加DLF Catalog。
SET
修改Foreign Server的DLF Catalog。
DROP
删除Foreign Server的DLF Catalog。例如
ALTER SERVER foreign_server_test OPTIONS (DROP dlf_catalog) ;
。删除Foreign Server
DROP SERVER <foreignserver_name> CASCADE;
参数说明如下:
参数
描述
foreignserver_name
待删除的Foreign Server名称。
CASCADE
删除Foreign Server时,级联删除依赖于Foreign Server的对象。例如外部表。
外部表更多操作
编辑外部表
在HoloWeb页面的左侧导航栏,选择已登录实例列表。
单击目标实例 > 目标数据库 > 目标模式下的外表,显示所有已创建的外部表。
鼠标双击目标外部表,在详情页面单击编辑表。
您可以根据业务需求,更改需要映射的外部源表的字段或分区。
单击提交,完成对当前外部表的编辑。
修改外部表名称
在HoloWeb页面左侧导航栏的已登录实例列表中查询目标外部表,查询目标外部表的操作请参见编辑外部表的步骤1~2。
鼠标右键单击目标外部表,选择重命名。
在修改表名对话框中填入新名称。
单击确认。
删除外部表
在HoloWeb页面左侧导航栏的已登录实例列表中查询目标外部表,查询目标外部表的操作请参见编辑外部表步骤的1~2。
鼠标右键单击目标外部表,选择删除表。
在删除表对话框中单击确认。
数据预览
在HoloWeb页面左侧导航栏的已登录实例列表中查询目标外部表,查询目标外部表的操作请参见编辑外部表步骤的1~2。
鼠标双击目标外部表,在外部表的详情页面单击数据预览。
常见问题
问题描述:在HoloWeb中访问目标外部表时,提示无RAM DLF API相关权限。页面报错包含如下信息:
You are not authorized to perform the operation. Please use RAM to authorize the operation.Action: [dlf:xxx].
解决方法:需要在RAM上授予AliyunDLF相关OpenAPI层权限。
相关文档
您还可以通过SQL方式创建外部服务器(Foreign Server),详情请参见创建外部服务器。
您还可以通过SQL方式创建外部表,详情请参见在Hologres实例中创建外部表。
关于更多外部表DDL语句详情,请参见: