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

问题描述 投票:0回答:2

我在表格中有数据

select * from my_table

它包含10k观测值。如何将表格中的数据导出为CSV到s3存储桶。 (我不想将数据导出到我的本地机器,然后推送到s3)。

sql amazon-web-services greenplum
2个回答
1
投票

我建议先使用WINSCP或文件传输将数据加载到主节点。然后将此文件从主节点移动到S3存储。

因为,将数据从主节点移动到S3存储利用了亚马逊的带宽,它将比用于将文件从本地机器传输到S3的本地连接带宽快得多。


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

© www.soinside.com 2019 - 2024. All rights reserved.