数据仓库服务 GaussDB(DWS)-使用外表功能实现GaussDB(DWS)集群间数据迁移:使用GDS导入数据源
使用GDS导入数据源
- 使用root账户登录E CS ,使用文件传输工具将7下载好的工具包上传到/opt目录下。
- 在/opt目录下解压工具包。
cd /opt
unzip dws_client_8.1.x_redhat_x64.zip
- 创建GDS用户,并修改数据源目录和GDS目录的属主。
groupadd gdsgrp
useradd -g gdsgrp gds_user
chown -R gds_user:gdsgrp /opt/gds
chown -R gds_user:gdsgrp /input_data
- 切换到gds_user用户。
su - gds_user
- 导入GDS环境变量。
仅8.1.x及以上版本需要执行,低版本请跳过。
cd /opt/gds/bin
source gds_env
- 启动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。
- 使用gsql连接第一套DWS集群。
- 执行exit切换root用户,进入ECS的/opt目录,导入gsql的环境变量。
cd /opt
source gsql_env.sh
- 进入/opt/bin目录,使用gsql连接第一套DWS集群。
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为用户创建集群设置的密码。
- 执行exit切换root用户,进入ECS的/opt目录,导入gsql的环境变量。
- 创建普通用户leo,并赋予创建外表的权限。
12
CREATE USER leo WITH PASSWORD 'password';ALTER USER leo USEFT;
- 切换到leo用户,创建GDS外表。
1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829
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';
- 创建本地表。
1 2 3 4 5 6 7 8 91011121314151617181920
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);
- 从GDS外表导入数据并查询,数据导入成功。
12
INSERT INTO product_info SELECT * FROM product_info_ext ;SELECT count(*) FROM product_info;