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

RDS外部表

RDS(Relational Database Service)是阿里云用戶主要使用的服務,需要通過內網域名訪問。如果您需要通過MaxCompute將數據加載至RDS的表中,可參考該文檔進行操作。本文為您介紹如何在外網或VPC網絡環境下基于RDS數據源創建外部表并寫入數據。

前提條件

已開通MaxCompute和云數據庫RDS間的網絡連接,詳情請參見網絡開通流程。

使用限制

  • 支持華北2(北京)、華東2(上海)、華北3(張家口)、華北6(烏蘭察布)、華東1(杭州)、華南1(深圳)、中國香港、華東 2 金融云(可用區F)、日本(東京)、新加坡、馬來西亞(吉隆坡)、印度尼西亞(雅加達)、德國(法蘭克福)、美國(硅谷)、美國(弗吉尼亞)地域通過訪問VPC方案(專線直連)連接MaxCompute和云數據庫RDS,僅以上地域可以創建RDS數據源外部表,其他地域暫不支持。

  • 網絡打通時,MaxCompute側僅打通到所填VPC ID的網絡連接,如需跨Region訪問或者訪問該Region的其他VPC,請根據云上VPC現有打通方案,打通專線直連方案所填寫的VPC和其他VPC之間的網絡。

  • 暫不支持PrivateZone域名。

  • 支持RDS MySQL 5.x和8.0版本,暫不支持其他RDS引擎。

  • 當您需要向RDS外部表寫入大量數據時,采用并行多進程寫入方式,會小概率出現某個寫入進程數據重寫情況,導致數據重復。

  • MaxCompute里建的RDS外部表,其中DECIMAL數據類型默認小數18位,不能修改,只能建成decimal(38,18)。如果小數位數比較少,可以在MaxCompute中建外部表時數據類型選擇String,使用的時候再使用cast函數強制轉換。

  • RDS外部表不支持cluster屬性。

語法說明

建表時,表名和列名大小寫不敏感。在查詢表或列名時,無需區分大小寫,且不支持強制轉換大小寫。

--開啟Hive兼容模式。
SET odps.sql.hive.compatible = true;
CREATE EXTERNAL TABLE <mcrdsexternal_table_name>(
  <col_name1> <data_type>,
  <col_name2> <data_type>,
  ......
)
STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler'  --處理JDBC連接類數據源的Handler。
location '<jdbc:mysql://realm_name:port/rds_database_name?useSSL=false&user=user_name&password=password_value&table=rds_table_name>' 
TBLPROPERTIES(
 ['odps.federation.jdbc.colmapping'='<col_name1:rdstable_colname1|select_alias1>[,<col_name2:rdstable_colname2|select_alias2>,...]',]
 'mcfed.mapreduce.jdbc.input.query'='<select_sentence>',
 'networklink'='<networklink_name>'
)
;
  • mcrdsexternal_table_name:必填。待創建外部表的名稱。

  • col_name:必填。外部表的列名稱。

  • data_type:必填。列的數據類型。

  • jdbc:mysql://realm_name:port/rds_database_name?useSSL=false&user=user_name&password=password_value&table=rds_table_name:必填。連接RDS數據源表的連接字符串。

    說明

    連接字符串中如果包含特殊字符需要轉換為URL編碼,轉換URL編碼請參見URL_ENCODE。

    • realm_name:port:RDS數據連接內網地址及內網端口,獲取方式請參見查看和管理實例連接地址和端口

    • rds_database_name:RDS數據庫名稱。

    • user_name:RDS數據庫的賬號。

    • password_value:RDS數據庫的密碼。

    • rds_table_name:RDS源表名稱。

  • TBLPROPERTIES

    • odps.federation.jdbc.colmapping:可選。MaxCompute外部表與RDS數據源表列的映射關系,此處的映射列數需要與MaxCompute外部表定義的列數保持一致。其中:rdstable_colname為RDS源表的列名(全部列映射),select_alias為給查詢結果定義的列別名(指定列映射)。

      • 若未配置該參數,則會使用MaxCompute外部表中定義的列名映射RDS同名列訪問。

      • 若配置該參數,但是只指定MaxCompute外部表部分列的映射關系,則按照源表字段名映射至RDS外部表的對應列。其他未指定的列,如果列名或類型不匹配會報錯。

    • mcfed.mapreduce.jdbc.input.query:可選。讀取RDS數據源表數據。外部表的列、列名與直接查詢的RDS數據源表的列、列名及數據類型保持一致。如果使用了別名,則與別名保持一致。select_sentence格式為SELECT xxx FROM <rds_database_name>.<rds_table_name>。

    • networklink:必填。RDS實例所在VPC的MaxCompute網絡連接名稱。您可以請登錄MaxCompute控制臺,在左側導航欄選擇租戶管理 > 網絡連接,即可在網絡連接頁面獲取您所創建對應的網絡連接名稱。

使用RDS數據源創建MaxCompute的外部表并加載數據

使用RDS數據源創建MaxCompute外部表的步驟如下:

  1. 登錄RDS數據庫,執行建表語句并插入數據。操作詳情請參見通過DMS登錄RDS數據庫

    建表示例如下:

    CREATE TABLE `rds_mc_external` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(32) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `rds_mc_external`(`id` ,`name` ) VALUES(1,"lisi");
    INSERT INTO `rds_mc_external`(`id` ,`name` ) VALUES(1,"zhangsan");
  2. 在MaxCompute客戶端創建映射RDS數據源的外部表。您可以通過如下兩種方式進行操作:

    • 創建MaxCompute外部表的列名和RDS中表的列名完全對應。

      1. 在MaxCompute客戶端創建外部表,表列名與RDS中表的列名完全對應。命令示例如下:

        SET odps.sql.hive.compatible = true;
        CREATE EXTERNAL TABLE mc_vpc_rds_external (
        id int,
        name string
        )
        STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler'
        location 'jdbc:mysql://rm-2ze01y92y1tzp****.mysql.rds.aliyuncs.com:3306/rds_test?useSSL=false&user=****&password=****&table=rds_mc_external'
        TBLPROPERTIES(
        'mcfed.mapreduce.jdbc.input.query'='select * from rds_test.rds_mc_external',
        'networklink'='networklink4mysql'
        );
      2. 向新建的MaxCompute表中插入數據。

        命令示例如下:

        --插入數據。
        INSERT INTO table mc_vpc_rds_external VALUES(2,"zhagnsan");
      3. 查詢數據插入結果。

        命令示例如下:

        --查詢數據插入結果。
        SELECT * FROM mc_vpc_rds_external;
    • 創建MaxCompute外部表的列名和RDS表指定的列名進行映射。

      1. 在MaxCompute客戶端創建外部表,表列名與RDS表中指定的列名進行映射。命令示例如下:

        SET odps.sql.hive.compatible = true;
        CREATE EXTERNAL TABLE mc_vpc_rds_external_mapping (
          key int,
          value string
        )
        STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler'
        location 'jdbc:mysql://rm-2ze01y92y1tzp****.mysql.rds.aliyuncs.com:3306/rds_test?useSSL=false&user=****&password=****&table=rds_mc_external'
        TBLPROPERTIES(
        'mcfed.mapreduce.jdbc.input.query'='select * from rds_test.rds_mc_external',
        'networklink'='networklink4mysql'
        );
      2. 向新建的MaxCompute表中插入數據。

        命令示例如下:

        --插入數據。
        INSERT INTO TABLE mc_vpc_rds_external_mapping VALUES(4,"lisi");
      3. 查詢數據插入結果。

        命令示例如下:

        --查詢數據插入結果。
        SELECT * FROM mc_vpc_rds_external_mapping;