IMPORT FOREIGN SCHEMA语句用于批量创建外部表。本文为您介绍IMPORT FOREIGN SCHEMA语句的用法和使用限制。

使用限制

使用IMPORT FOREIGN SCHEMA语句时,建议您添加LIMIT TO限制,并使用括号将需要添加限制的表名称括起来。如果不添加该限制,系统则将目标MaxCompute工作空间中的所有表批量创建至Hologres中。

命令格式

在Hologres中批量创建外部表的命令格式如下。
IMPORT FOREIGN SCHEMA remote_schema
    [ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
    FROM SERVER odps_server
    INTO local_schema 
    [ OPTIONS ( option 'value' [, ... ] ) ]

参数说明

参数说明如下表所示。
参数 描述
remote_schema 需要导入的MaxCompute表所在的项目名称。
table_name 需要导入的MaxCompute表名称。
server_name MaxCompute表所在的外部服务器名称,默认为odps_server

您可以直接调用Hologres底层已创建的名为odps_server的外部表服务器。详细原理请参见Postgres FDW

local_schema Hologres外部表所在的schema名(如public)。
options Hologres支持如下两个option:
  • if_table_exist:表示导入时已经存在该表。取值如下:
    • error:默认值,表示已有同名外部表,不再重复创建。
    • ignore:忽略该同名表,跳过该表的导入,使导入的表不重复。
    • update:更新并重新导入该表。
  • if_unsupported_type:表示导入的外部表中存在Hologres不支持的数据类型。取值如下:
    • error:报错,导入失败, 并提示哪些表存在不支持的类型。
    • skip:默认值,表示跳过导入的存在不支持类型的表,并提示哪些表被跳过。
说明 Hologres仅支持创建MaxCompute外部表。新建的外部表名称需要同MaxCompute表的名称一致。

使用示例

示例选取MaxCompute公共数据集public_data中的表,在Hologres中批量创建外部表。您可以参照使用公开数据集描述,登录并查询数据集 。

  • 示例1:为public schema新建一张外部表,若表存在则更新表。
    IMPORT FOREIGN SCHEMA public_data LIMIT to
    (customer) 
      FROM server odps_server INTO PUBLIC options(if_table_exist 'update');
  • 示例2:为public schema批量新建外部表。
     IMPORT FOREIGN SCHEMA public_data LIMIT to(
      customer,
      customer_address,
      customer_demographics,
      inventory,item,
      date_dim,
      warehouse) 
      FROM server odps_server INTO PUBLIC options(if_table_exist 'update');
  • 示例3:新建一个holotest schema并批量新建外部表。
    create schema testdemo;
    
    IMPORT FOREIGN SCHEMA public_data LIMIT to(
      customer,
      customer_address,
      customer_demographics,
      inventory,item,
      date_dim,
      warehouse) 
      FROM server odps_server INTO testdemo options(if_table_exist 'update');
      
    set search_path to testdemo;
  • 示例4:在public schema批创建外部表,已有外表则报错。
    IMPORT FOREIGN SCHEMA public_data LIMIT to
    (customer,
      customer_address) 
      FROM server odps_server INTO PUBLIC options(if_table_exist 'error');
  • 示例5:在public schema批量创建外部表,已有外表则跳过该外部表。
    IMPORT FOREIGN SCHEMA public_data LIMIT to
    (customer,
      customer_address) 
      FROM server odps_server INTO PUBLIC options(if_table_exist 'ignore');

HoloWeb可视化批量创建外部表

HoloWeb提供可视化批量创建外部表功能,无需写SQL命令就能创建外部表,步骤如下。

  1. 在HoloWeb开发页面的顶部菜单栏,选择元数据管理 > MaxCompute加速,单击批量创建外部表

    您也可以在元数据管理界面的已登录实例列表。单击目标数据库,鼠标右击数据库下已创建的目标模式,选择批量创建外部表

    新建内部表
  2. 批量创建外部表页面,配置各项参数。批量创建外部表
    类别 参数 描述
    基本属性 实例名 已登录的实例名称。
    数据库 存放新创建外部表的Hologres数据库名称。
    目标位置 模式 模式名称。

    您可以选择默认创建的public模式,也可以选择新建的模式名称。

    来源 类型 目前仅支持MaxCompute外部表。
    服务器列表 您可以直接调用Hologres底层已创建的名为odps_server的外部表服务器。详细原理请参见Postgres FDW
    远程库 MaxCompute的项目名称。
    选择要直接加速的表
    • 整库加速:批量创建所选项目下的所有表。
    • 部分加速:您可以通过搜索表名称或关键字,选择需要创建的表。
      说明 部分加速最多支持显示200张表,超出部分将不显示,但是也会创建成功。

      例如,目标项目中共有203个名称中包含test的表,搜索test时,此处最多只会显示200个相关的表,但实际上203个表都会创建成功。

    高级选项 表名冲突
    • 忽略,继续创建其他表:创建表时,如果数据库中已存在当前创建的表名称,则忽略当前创建的表,继续创建其他表。
    • 更新,修改同名表:创建表时,如果数据库中已存在当前创建的表名称,则更新已有表的数据。
    • 报错,不再重复创建:创建表时,如果数据库中已存在当前创建的表名称,则发送报错,不再重复创建。
    数据类型不支持
    • 报错,导入失败:如果创建表时存在不支持的数据类型,则产生报错,导入数据失败。
    • 忽略,跳过不支持字段:如果创建表时存在不支持的数据类型,则忽略不支持的字段,继续导入数据。
  3. 单击运行,批量创建外部表。

数据类型映射

批量创建的MaxCompute外部表与Hologres的数据类型映射,详情请参见批量创建MaxCompute外部表与Hologres的数据类型映射