如何将表中的数据作为CSV从Greenplum数据库导出到AWS s3存储桶

时间:2018-08-30 00:09:20

标签: sql amazon-web-services greenplum

我在表中有数据

select * from my_table

它包含1万个观测值。如何将表中的数据作为CSV格式导出到s3存储桶。 (我不想将数据导出到本地计算机,然后推送到s3)。

2 个答案:

答案 0 :(得分:1)

我建议您首先使用WINSCP或文件传输将数据加载到您的主节点中。 然后将该文件从主节点移至S3存储。

因为将数据从主节点移动到S3存储会占用Amazon的带宽,这将比我们用于将文件从本地计算机传输到S3的本地连接带宽快得多。

答案 1 :(得分:1)

请,请停止使用PostgreSQL和Greenplum标记您的问题。如果您使用的是Greenplum和PostgreSQL,则问题的答案将大不相同。我不能太强调这一点。

如果使用的是Greenplum,则应使用“外部表”中的S3协议读写数据到S3。

所以你的桌子:

select * from my_table;

和您的外部表:

CREATE EXTERNAL TABLE ext_my_table (LIKE my_table) 
LOCATION ('s3://s3_endpoint/bucket_name')
FORMAT 'TEXT' (DELIMITER '|' NULL AS '' ESCAPE AS E'\\');

然后写入您的s3存储桶:

INSERT INTO ext_my_table SELECT * FROM my_table;

您将需要在Greenplum群集上进行一些配置,以便您也拥有s3配置文件。这也出现在每个细分目录中。

gpseg_data_dir/gpseg-prefixN/s3/s3.conf

文件内容示例:

[default]
secret = "secret"
accessid = "user access id"
threadnum = 3
chunksize = 67108864

有关S3的更多信息,请参见:http://gpdb.docs.pivotal.io/5100/admin_guide/external/g-s3-protocol.html#amazon-emr__s3_config_file