我在表格中有数据
select * from my_table
它包含10k观测值。如何将表格中的数据导出为CSV到s3存储桶。 (我不想将数据导出到我的本地机器,然后推送到s3)。
我建议先使用WINSCP或文件传输将数据加载到主节点。然后将此文件从主节点移动到S3存储。
因为,将数据从主节点移动到S3存储利用了亚马逊的带宽,它将比用于将文件从本地机器传输到S3的本地连接带宽快得多。
拜托,请停止使用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