Copy是PostgreSql数据库自带的数据工具,它不仅支持表于表之间的数据加载,也支持文件于表之间的数据加载和表对文件的数据卸载。对于Greenplum数据库,使用copy命令进行数据加载,数据需要经过Master节点分发到Segment节点;同样使用copy命令进行数据卸载,数据也需要由Segment发送到Master节点,由Master节点汇总后再写入外部文件,这样就限制了数据加载与卸载的效率,数据量较小的情况下,使用copy命令就非常方便。

1、创建测试表

GreenPlum数据的装载与卸载之copy命令的使用_第1张图片
由于在建表语句中,没有指定具体使用哪个字段进行数据分发(分布键),默认使用随机分布。这里系统使用package_id作为分布键进行数据分发。

2、数据的卸载

这里的数据将使用copy命令从PostgreSQL数据库中导出,如下:
GreenPlum数据的装载与卸载之copy命令的使用
如果字段中含有空值,在TEXT模式中默认的字符串是\N(反斜线加上N),在CSV模式中是一个没有引用的空值。如下:
GreenPlum数据的装载与卸载之copy命令的使用_第2张图片
同样,此方法在greenplum上有效。

3、数据的加载

使用copy命令加载数据,必须使用超级用户操作。
GreenPlum数据的装载与卸载之copy命令的使用_第3张图片
如上图所示,加载完成后,通过查询可见数据分布比较均匀,基本平均分布在3个Segment节点上。