数据仓库服务 GAUSSDB(DWS)-从DLI导入表数据到GaussDB(DWS)集群:步骤四:通过外表导入DLI表数据

时间:2024-11-05 17:23:11

步骤四:通过外表导入 DLI 表数据

  1. 使用系统管理员dbadmin用户登录 GaussDB (DWS)数据库,默认登录gaussdb数据库即可。
  2. 执行以下SQL创建外部Server。其中OBS终端节点从1获取,AK和SK从准备工作获取,DLI终端节点从2获取。

    如果DWS和DLI是同一个账户创建下,则AK和SK分别对应重复填写一次。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE SERVER dli_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS 
         ( ADDRESS 'OBS终端节点', 
           AC CES S_KEY 'AK值', 
           SECRET_ACCESS_KEY 'SK值', 
           TYPE 'DLI',
           DLI_ADDRESS 'DLI终端节点',
           DLI_ACCESS_KEY 'AK值',
           DLI_SECRET_ACCESS_KEY 'SK值'
         );
    

  3. 执行以下SQL创建目标schema。

    1
    CREATE SCHEMA dws_data;
    

  4. 执行以下SQL创建外表。其中项目ID替换为3获取的实际值。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    CREATE FOREIGN TABLE dws_data.dli_pq_order (
      order_id VARCHAR(14) PRIMARY KEY NOT ENFORCED,
      order_channel VARCHAR(32),
      order_time TIMESTAMP,
      cust_code VARCHAR(6),
      pay_amount DOUBLE PRECISION,
      real_pay DOUBLE PRECISION
    )
    SERVER dli_server
    OPTIONS (
      FORMAT 'parquet',
      ENCODING 'utf8',
      DLI_PROJECT_ID '项目ID',
      DLI_DATABASE_NAME 'dli_data',
      DLI_TABLE_NAME 'dli_order')
    DISTRIBUTE BY roundrobin;
    

  5. 执行以下SQL,通过外表查询DLI的表数据。

    结果显示,成功访问DLI表数据。
    1
    SELECT * FROM dws_data.dli_pq_order;
    

  6. 执行以下SQL,创建一张新的本地表,用于导入DLI表数据。

    1
    2
    3
    4
    5
    6
    CREATE TABLE dws_data.dws_monthly_order
         ( order_month       CHAR(8),
           cust_code         VARCHAR(6),
           order_count       INT,
           total_pay_amount  DOUBLE PRECISION,
           total_real_pay    DOUBLE PRECISION );
    

  7. 执行以下SQL,查询出2023年的月度订单明细,并将结果导入DWS表。

    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO dws_data.dws_monthly_order
         ( order_month, cust_code, order_count     
         , total_pay_amount, total_real_pay )
    SELECT TO_CHAR(order_time, 'MON-YYYY'), cust_code, COUNT(*)
         , SUM(pay_amount), SUM(real_pay)
      FROM dws_data.dli_pq_order
     WHERE DATE_PART('Year', order_time) = 2023
    GROUP BY TO_CHAR(order_time, 'MON-YYYY'), cust_code;
    

  8. 执行以下SQL查询表数据。

    结果显示,DLI表数据成功导入DWS数据库。

    1
    SELECT * FROM dws_data.dws_monthly_order;
    

support.huaweicloud.com/bestpractice-dws/dws_05_0007.html