我在表中有数据
select * from my_table
它包含1万个观测值。如何将表中的数据作为CSV格式导出到s3存储桶。 (我不想将数据导出到本地计算机,然后推送到s3)。
答案 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