IMPORT FOREIGN SCHEMA語句用于批量創建外部表。本文為您介紹IMPORT FOREIGN SCHEMA語句的用法和使用限制。
使用限制
使用
IMPORT FOREIGN SCHEMA
語句時,建議您添加LIMIT TO
限制,并使用括號將需要添加限制的表名稱括起來。如果不添加該限制,系統則將目標MaxCompute工作空間中的所有表批量創建至Hologres中。僅Hologres V1.1.26及以上版本支持對使用
IMPORT FOREIGN SCHEMA
創建的外部表名稱增加前綴和后綴,如果您的實例是V1.1.26以下版本,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。僅Hologres V1.3及以上版本支持MaxCompute的三層模型模式(即在原先的Project和Table之間增加了一層Schema的概念),更多描述請參見Schema操作。如果您想在Hologres中使用MaxCompute的三層模型的項目創建外部表,且您的Hologres版本較低,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。
命令格式
在Hologres中批量創建外部表的命令格式如下。
IMPORT FOREIGN SCHEMA remote_schema
[ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
FROM SERVER odps_server
INTO local_schema
[ OPTIONS ( option 'value' [, ... ] ) ]
參數說明
參數說明如下表所示。
參數 | 描述 |
remote_schema |
|
table_name | 需要導入的MaxCompute表名稱。 |
server_name | MaxCompute表所在的外部服務器名稱,默認為odps_server。 您可以直接調用Hologres底層已創建的名為odps_server的外部表服務器。詳細原理請參見Postgres FDW。 |
local_schema | Hologres外部表所在的Schema名(如public)。 |
options | Hologres支持如下四個option:
|
Hologres僅支持創建MaxCompute外部表。新建的外部表名稱需要同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:新建一個testdemo 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');
MaxCompute三層模型。
基于MaxCompute
odps_hologres
項目的tpch_10g
這個Schema中的odps_region_10g
表創建Hologres中的外部表。IMPORT FOREIGN SCHEMA "odps_hologres#tpch_10g" LIMIT to ( odps_region_10g ) FROM SERVER odps_server INTO public OPTIONS(if_table_exist 'error',if_unsupported_type 'error');
HoloWeb可視化批量創建外部表
HoloWeb提供可視化批量創建外部表功能,無需寫SQL命令就能創建外部表,步驟如下。
進入HoloWeb頁面,詳情請參見連接HoloWeb并執行查詢。
在HoloWeb開發頁面的頂部菜單欄,選擇
,單擊批量創建外部表。您也可以在元數據管理界面的已登錄實例列表。單擊目標數據庫,鼠標右擊數據庫下已創建的目標模式,選擇批量創建外部表。
在批量創建外部表頁面,配置各項參數。
類別
參數
描述
MaxCompute 數據源
項目名
MaxCompute的項目名稱。
Schema Name
MaxCompute的Schema名稱,對于使用兩層模型的MaxCompute項目,默認不展示;對于使用三層模型的MaxCompute項目,此處可下拉選擇當前項目下有權限的所有Schema。
目標表位置
Schema Name
模式名稱。
您可以選擇默認創建的public模式,也可以選擇新建的模式名稱。
高級選項
選擇要直接加速的表
整庫加速:批量創建所選項目或Schema下的所有表。
部分加速:您可以通過搜索表名稱或關鍵字,選擇需要創建的表。
說明部分加速最多支持顯示200張表,超出部分將不顯示,但是也會創建成功。
例如,目標項目中共有203個名稱中包含test的表,搜索test時,此處最多只會顯示200個相關的表,但實際上203個表都會創建成功。
表名沖突
忽略,繼續創建其他表:創建表時,如果數據庫中已存在當前創建的表名稱,則忽略當前創建的表,繼續創建其他表。
更新,修改同名表:創建表時,如果數據庫中已存在當前創建的表名稱,則更新已有表的數據。
報錯,不再重復創建:創建表時,如果數據庫中已存在當前創建的表名稱,則發送報錯,不再重復創建。
數據類型不支持
報錯,導入失敗:如果創建表時存在不支持的數據類型,則產生報錯,導入數據失敗。
忽略,跳過不支持字段:如果創建表時存在不支持的數據類型,則忽略不支持的字段,繼續導入數據。
單擊運行,批量創建外部表。