日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

執行MaxCompute SQL語句

從Hologres V0.10版本開始,Hologres與MaxCompute集成性進一步提升,支持在Hologres中執行MaxCompute的SQL語句,方便您直接快速操作MaxCompute。本文將為您介紹,在Hologres中如何執行MaxCompute SQL語句。

前提條件

使用限制

  • 僅Hologres V0.10 及以上版本支持在Hologres中執行MaxCompute SQL語句。請前往Hologres管控臺的實例詳情頁查看當前實例版本,如果您的實例是V0.10以下版本,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

  • 目前建議您在Hologres中僅執行MaxCompute的DDL語句,如果需要執行DML語句,請前往MaxCompute進行操作。

  • 每次調用只能執行一條SQL語句。

命令語法

  • 語法示例

    select exec_external_sql(
      'server', 
      'database', 
      'sql' , 
      timeout_ms, 
      'options'
    );

    如上參數必須要按照順序填寫,若是需要省略某些參數,需要顯示指定參數名,如下所示:

    exec_external_sql(
                server:='odps_server' , 
                database:='odps_project_name' , 
                sql:='sql' , 
                timeout_ms:=timeout_ms , 
                options:='options'
    )
  • 參數說明

    參數名

    參數含義

    說明

    示例

    server

    外部服務器名稱。您可以直接調用Hologres底層已創建的名為odps_server的外部表服務器。此函數目前僅支持odps server,外部server詳細原理請參見Postgres FDW

    如果為空字符串,會取odps_server作為外部server。

    'odps_server'

    database

    MaxCompute的project名。

    'seahawks'

    sql

    需要執行的MaxCompute SQL(建議只執行DDL語句):

    • create table

    • alter table

    • desc table

    • drop table

    SQL語句需要符合MaxCompute的語法,建議只執行DDL語句。如果SQL中有單引號,需要在SQL語句前后添加雙美元符號($$SQL$$)實現單引號轉義。

    說明

    在HoloWeb和DataStudio的臨時查詢頁面暫不支持轉義字符。

    'CREATE TABLE IF EXISTS MC_TBL ;'

    timeout_ms

    執行超時時間,單位ms。

    缺省或者小于0的情況下會將該參數值設置為60000ms。超過超時時間將會退出,同時向MaxCompute發送一個取消指令。

    50000

    options

    使用DataWorks或者MaxCompute客戶端提交SQL時,通常需要設置的SQL Flag。

    具體的配置項請參見SET操作,若是有多個flag需要設置,需要將字段類型改成JSON格式。

    {"odps.sql.type.system.odps2":"true"}或者{ "odps.sql.type.system.odps2":"true", "odps.sql.decimal.odps2=":"true"}

使用示例

您可以在Hologres中執行MaxCompute SQL,如果執行建表語句則會在MaxCompute對應的project中創建一張表。當前版本建議僅執行DDL語句。

  • 示例一:創建MaxCompute非分區表

    select exec_external_sql(
                'odps_server',
                'mc_project' , --project名
                'create table par_mc_table(id int,name string);' ,--在MaxCompute中創建一張表
                5000  --超時時間為5000ms
                );                
  • 示例二:創建MaxCompute分區表并指定分區

    --創建分區表
    select exec_external_sql(
              server:='odps_server',
              database:='mc_project', --maxcompute的project名
              sql:='create table par_mc_table(id int,name string) partitioned by (pt string);', --創建分區表
              timeout_ms:=10000--超時時間為10000ms
                      );
    --指定分區表的分區
    select exec_external_sql(
               'odps_server',
               'mc_project', --maxcompute的project名
               $$ALTER TABLE par_mc_table ADD IF NOT EXISTS partition(pt='202102');$$--指定分區
                      );
  • 示例三:跨Region創建MaxCompute表

    select exec_external_sql(
                'hangzhou_odps_server' ,
                'hologres_test' ,
                'create table mc_test(id int,create_time datetime,decimal_column decimal(38, 10));' ,
                50000,    --超時時間
                '{
                "odps.sql.type.system.odps2":"true",
                "odps.sql.decimal.odps2":"true"
      }'                  --MaxCompute的flag設置,分別代表開啟新數據類型和開啟decimal類型
    );
                        
  • 示例四:刪除MaxCompute中的表

    select exec_external_sql(
                'odps_server',
                'mc_project',  --MaxCompute的project名
                'drop table if exists mc_table;' ,--刪除MaxCompute的表
                50000
                );               
  • 示例五:配合“通過SQL方式導出MaxCompute”功能使用

    從Hologres V0.9版本開始,Hologres支持通過SQL導出數據至MaxCompute,但是該方法需要在MaxCompute中提前創建接收數據的表,操作比較麻煩。從Hologres V0.10版本開始,通過在Hologres中執行MaxCompute SQL,即可創建表,再將數據導出,支持一站式開發。

    示例操作將Hologres中非分區數據導入至MaxCompute非分區表。具體如下:

    1. 在Hologres準備一張Hologres內部表(例如:holo_table),用于導出數據至MaxCompute,示例DDL和數據如下:

      create table "public"."holo_table" (
       "id" int4,
       "name" text
      );
      
      insert into "public"."holo_table" values 
      (1,'a'),
      (2,'b'),
      (3,'c');
    2. 創建一張MaxCompute表,用于在MaxCompute中接收數據。

      select exec_external_sql(
                  'odps_server',
                  'mc_project' , --project名
                  'create table mc_sink_table(id int,name string);' ,--在MaxCompute中創建一張接收數據表
                  5000--超時時間為5000ms
                  );
    3. 在Hologres新建一張外部表,用于映射MaxCompute表。

      begin;
      create foreign table "public"."mc_mapping_foreign_table" (
       "id" int4,
       "name" text
      )
      server odps_server_bj
      options (project_name 'default_project_2361b62', table_name 'mc_sink_table');
      commit;
    4. 在Hologres通過SQL語句導出數據至MaxCompute。

      • 全部字段數據導出

        set hg_experimental_enable_write_maxcompute = on;-- 由于是beta功能,需要打開GUC參數
        insert into mc_mapping_foreign_table
        select * from holo_table;
      • 部分字段數據導出

        set hg_experimental_enable_write_maxcompute = on;-- 由于是beta功能,需要打開GUC參數
        insert into mc_mapping_foreign_table (name)
        select name from holo_table;

      更多關于數據導出的操作說明請參見通過SQL導出數據至MaxCompute