Zhou Study hard, improve every day.

gpfdist使用

2020-04-28
本文 2638 字,阅读全文约需 8 分钟

1.服务启动

先试用root账户登录

mkdir -p /data/gpfdist/datamkdir -p /data/gpfdist/logchown -R gpadmin:gpadmin /data/gpfdistsu - gpadmin

启动服务

gpfdist -d /data/gpfdist/data -p 9091 -l /data/gpfdist/log/gpfdist_9091.log &

查看服务运行情况

ps -ef|grep gpfdist

报错

gpfdist: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

解决:

从编译源拷贝这些so文件

cp -rd /usr/lib64/libevent* lib/cp -rd /usr/lib64/libapr* lib/

2.创建数据源

在源数据库中先随便弄一个test表,弄点数据。

创建测试数据表,作为数据源

CREATE TABLE "test"."test" (  "test_id" int4 NOT NULL,  "test_name" varchar(255),  CONSTRAINT "test_pkey" PRIMARY KEY ("test_id"));INSERT INTO "test"."test"("test_id", "test_name") VALUES (1, '张三');INSERT INTO "test"."test"("test_id", "test_name") VALUES (2, '李四');INSERT INTO "test"."test"("test_id", "test_name") VALUES (3, '王五');INSERT INTO "test"."test"("test_id", "test_name") VALUES (4, '测试用户4');INSERT INTO "test"."test"("test_id", "test_name") VALUES (5, '测试用户5');INSERT INTO "test"."test"("test_id", "test_name") VALUES (6, '测试用户6');INSERT INTO "test"."test"("test_id", "test_name") VALUES (7, '测试用户7');INSERT INTO "test"."test"("test_id", "test_name") VALUES (8, '测试用户8');INSERT INTO "test"."test"("test_id", "test_name") VALUES (9, '测试用户9');INSERT INTO "test"."test"("test_id", "test_name") VALUES (10, '测试用户10');INSERT INTO "test"."test"("test_id", "test_name") VALUES (11, '测试用户11');INSERT INTO "test"."test"("test_id", "test_name") VALUES (12, '测试用户12');INSERT INTO "test"."test"("test_id", "test_name") VALUES (13, '测试用户13');INSERT INTO "test"."test"("test_id", "test_name") VALUES (14, '测试用户14');INSERT INTO "test"."test"("test_id", "test_name") VALUES (15, '测试用户15');INSERT INTO "test"."test"("test_id", "test_name") VALUES (16, '测试用户16');INSERT INTO "test"."test"("test_id", "test_name") VALUES (17, '测试用户17');INSERT INTO "test"."test"("test_id", "test_name") VALUES (18, '测试用户18');INSERT INTO "test"."test"("test_id", "test_name") VALUES (19, '测试用户19');INSERT INTO "test"."test"("test_id", "test_name") VALUES (20, '测试用户20');

创建外部表用于导出数据

注意:外部表需要指定gpfdist的ip和端口,还有详细的目录地址,其中文件名支持通配符。可以编写多个gpfdist的地址,但是不能超过总的segment数

注意:单节点greenplum无法使用,因为segment数量为0。

源数据库创建只写的扩展表,仅用于写入数据

create writable external table test1(like test)location ('gpfdist://192.168.81.154:9091/test.dat')Format 'TEXT' (delimiter as E'|' null as '' escape 'OFF');

导入数据

insert into test1 select * from test;

导入数据后,打开 /data/gpfdist/data/test.dat 即可以看到刚才导入的数据。

删除扩展表

drop external table test1

3.创建外部表用于导入数据

在目标数据库中创建只读的扩展表,挂载gpfdist服务地址,此地址对应上面的导出数据文件,当然,此文件也可以视网络情况拷贝迁移,挂载到目标数据库就近的gpfdist服务器上。

create READABLE external table test2(like test)location ('gpfdist://192.168.81.154:9091/test.dat')Format 'TEXT' (delimiter as E'|' null as '' escape 'OFF');

查询数据

验证下外部表是否可用。

select * from  test2

导入数据

将数据从外部表导入到目标表。

insert into target select * from test2

核对数据

核对下目标表的数据,已经都过来了。

select * from   target 

删除扩展表

drop external table test2

下一篇 gpload使用

Comments

Content