如何将表中的数据作为 CSV 从 Greenplum 数据库导出到 AWS s3 存储桶
Posted
技术标签:
【中文标题】如何将表中的数据作为 CSV 从 Greenplum 数据库导出到 AWS s3 存储桶【英文标题】:How to export data from table as CSV from Greenplum database to AWS s3 bucket 【发布时间】:2018-08-30 00:09:19 【问题描述】:我在表格中有数据
select * from my_table
它包含10k
观察。如何将表中的数据作为 CSV 导出到s3
bucket。
(我不想将数据导出到我的本地机器然后推送到s3
)。
【问题讨论】:
怀疑这有点矫枉过正,但 DMS 可能可以做到这一点(参见 docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html)。您有什么理由不想编写一个简单的客户端(或者可能是 Lambda 函数)来执行此操作? 您使用的是 Greenplum 还是 Postgres? 【参考方案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
【讨论】:
【参考方案2】:我建议首先使用 WINSCP 或文件传输将数据加载到您的主节点。 然后将此文件从您的主节点移动到 S3 存储。
因为,将数据从 Master 节点移动到 S3 存储会利用 Amazon 的带宽,这将比我们用于将文件从本地机器传输到 S3 的本地连接带宽快得多。
【讨论】:
以上是关于如何将表中的数据作为 CSV 从 Greenplum 数据库导出到 AWS s3 存储桶的主要内容,如果未能解决你的问题,请参考以下文章
如何将表数据从 PostgreSQL (pgAdmin) 导出到 CSV 文件?
如何将具有自定义枚举类型的数据从 csv 插入现有的 PostgreSQL 表