greenplum数据拷贝

1. copy的方式

PostgreSQL的COPY语句从外部文件拷贝数据到数据表中。它比INSERT语句插入多行的效率更高,但是行仍需流过Master。所有数据都在一个命令中被拷贝,它并不是一种并行处理。COPY命令的数据输入来自于一个文件或者标准输入使用COPY适合于增加相对较小的数据集合(例如多达上万行的维度表)或者一次性数据装载。在编写脚本处理装载少于1万行的少量数据时使用COPY。因为COPY是一个单一命令,在使用这种方法填充表时没有必要禁用自动提交。

使用者可以运行多个并发的COPY命令以提高性能。

  • 创建csv文件,给予写权限

    cd /usr/local/greenplum-db-6.20.3
    mkdir data
    touch deliver.csv
    chmod 777 deliver.csv
    
  • 切换到gpadmin用户

    su gpadmin
    
  • 进入gp安装目录

    cd /usr/local/greenplum-db-6.20.3/bin
    
  • 进入gp

    ./psql -p 5432 postgres
    
  • 查看数据库列表

    \l
    
  • 选择进入数据库

    \c gp_sydb
    
  • 查看数据表

    \d
    
  • 查看表空间大小

    select pg_size_pretty(pg_table_size('c_cs_e_deliver_receiver'));
    
  • 导出csv文件

    copy c_cs_e_deliver to '/usr/local/greenplum-db-6.20.4/data/deliver.csv' with csv header;
    
  • 根据csv文件加载表数据

    copy c_cs_e_deliver_1 from '/usr/local/greenplum-db-6.20.4/data/deliver.csv' with csv header;
    

2 使用Gpfdist的外部表

装载大型事实表的最快方式是使用gpfdist,gpfdist是一个使用http协议的文件服务器程序,它以并行的方式向greenplum数据库的segment供应外部文件。一个gpfdist的实例每秒能供应200MB数据并且很多gpfdist进程可以同时进行。每一个供应要被装载数据的一部分,当使用者使用insert into table select * from <> 进行装载时,insert 语句会被master解析分给主segment。segment连接gpfdist服务器且并行检索数据,解析并验证数据,从分布键数据计算一个hash值并基于hash把行发送到对应的segment。通过许多segment和gpfdit参与装载处理,可以以非常高的速率被装载。
  • 同一数据库
insert into c_cs_e_deliver_receiver_1 select * from c_cs_e_deliver_receiver;
  • 文件作为输入源

    • 基于uri创建外部表

      CREATE EXTERNAL TABLE receiver_file_view (
      "id" varchar(32),
        "pid" varchar(32),
        "ftype" varchar(32) ,
        "fvalue" varchar(256)
       )
      LOCATION ('file://host-2.15:5432/usr/local/greenplum-db-6.20.3/data/receiver.csv')
      FORMAT 'CSV' (HEADER);
      
    • 使用外部表装载数据

      insert into receiver_new select * from receiver_file_view;
      

辅助工具

  • 查看查询进程活动

    select pg_stat_activity.pid,now()-pg_stat_activity.query_start as duration,pg_stat_activity.query
    from pg_stat_activity;
    
  • 关闭进程

    select pg_cancel_backend(9649);
    
  • 查看分片

    SELECT * FROM gp_segment_configuration;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值