数据仓库服务 GAUSSDB(DWS)-使用外表功能实现GaussDB(DWS)集群间数据迁移:使用GDS导入数据源

时间:2024-09-24 16:54:34

使用GDS导入数据源

  1. 使用root账户登录E CS ,使用文件传输工具将7下载好的工具包上传到/opt目录下。
  2. 在/opt目录下解压工具包。

    cd /opt

    unzip dws_client_8.1.x_redhat_x64.zip

  3. 创建GDS用户,并修改数据源目录和GDS目录的属主。

    groupadd gdsgrp

    useradd -g gdsgrp gds_user

    chown -R gds_user:gdsgrp /opt/gds

    chown -R gds_user:gdsgrp /input_data

  4. 切换到gds_user用户。

    su - gds_user

  5. 导入GDS环境变量。

    仅8.1.x及以上版本需要执行,低版本请跳过。

    cd /opt/gds/bin

    source gds_env

  6. 启动GDS。

    /opt/gds/bin/gds -d /input_data/ -p 192.168.0.90:5000 -H 192.168.0.0/24 -l /opt/gds/gds_log.txt -D

    • -d dir:保存有待导入数据的数据文件所在目录。本教程中为“/input_data/”。
    • -p ip:port:GDS监听IP和监听端口。配置为GDS所在的ECS的内网IP,可与DWS通讯,本例为192.168.0.90:5000。
    • -H address_string:允许哪些主机连接和使用GDS服务。参数需为CIDR格式。本例设置为DWS的内网IP所在的网段即可。
    • -l log_file:存放GDS的日志文件路径及文件名。本教程为“/opt/gds/gds_log.txt”。
    • -D:后台运行GDS。

  7. 使用gsql连接第一套DWS集群。

    1. 执行exit切换root用户,进入ECS的/opt目录,导入gsql的环境变量。

      exit

      cd /opt

      source gsql_env.sh

    2. 进入/opt/bin目录,使用gsql连接第一套DWS集群。

      cd /opt/bin

      gsql -d gaussdb -h 192.168.0.8 -p 8000 -U dbadmin -W password -r

      • -d: 连接的数据库名,本例为默认数据库gaussdb。
      • -h:连接的DWS内网IP,即6查询到的内网IP,本例为192.168.0.8。
      • -p:DWS端口,固定为8000。
      • -U:数据库管理员用户,默认为dbadmin。
      • -W:管理员用户的密码,为3创建集群时设置的密码,本例password为用户创建集群设置的密码。

  8. 创建普通用户leo,并赋予创建外表的权限。

    1
    2
    CREATE USER leo WITH PASSWORD 'password';
    ALTER USER leo USEFT;
    

  9. 切换到leo用户,创建GDS外表。

    以下LOCATION参数请填写为6的GDS的监听IP和端口,后面加上/*,例如:gsfs://192.168.0.90:5000/*

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    SET ROLE leo PASSWORD 'password';
    DROP FOREIGN TABLE IF EXISTS product_info_ext;
    CREATE FOREIGN TABLE product_info_ext
    (
        product_price                integer        not null,
        product_id                   char(30)       not null,
        product_time                 date           ,
        product_level                char(10)       ,
        product_name                 varchar(200)   ,
        product_type1                varchar(20)    ,
        product_type2                char(10)       ,
        product_monthly_sales_cnt    integer        ,
        product_comment_time         date           ,
        product_comment_num          integer        ,
        product_comment_content      varchar(200)              
    ) 
    SERVER gsmpp_server 
    OPTIONS(
    LOCATION 'gsfs://192.168.0.90:5000/*',
    FORMAT 'CSV' ,
    DELIMITER ',',
    ENCODING 'utf8',
    HEADER 'false',
    FILL_MISSING_FIELDS 'true',
    IGNORE_EXTRA_DATA 'true'
    )
    READ ONLY
     LOG  INTO product_info_err 
    PER NODE REJECT LIMIT 'unlimited';
    

  10. 创建本地表。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    DROP TABLE IF EXISTS product_info;
    CREATE TABLE product_info
    (
        product_price                integer        not null,
        product_id                   char(30)       not null,
        product_time                 date           ,
        product_level                char(10)       ,
        product_name                 varchar(200)   ,
        product_type1                varchar(20)    ,
        product_type2                char(10)       ,
        product_monthly_sales_cnt    integer        ,
        product_comment_time         date           ,
        product_comment_num          integer        ,
        product_comment_content      varchar(200)                   
    ) 
    WITH (
    orientation = column,
    compression=middle
    ) 
    DISTRIBUTE BY hash (product_id);
    

  11. 从GDS外表导入数据并查询,数据导入成功。

    1
    2
    INSERT INTO product_info SELECT * FROM product_info_ext ;
    SELECT count(*) FROM product_info;
    

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