在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语句详情,请参见: