将 Greenplum 数据库以 .csv 格式导出到 Amazon S3

Posted

技术标签:

【中文标题】将 Greenplum 数据库以 .csv 格式导出到 Amazon S3【英文标题】:Exporting a Greenplum data base to Amazon S3 as a .csv 【发布时间】:2017-08-17 16:06:27 【问题描述】:

假设场景 - 我有一个 10 节点的 Greenplum 集群,在 1000 个表中包含 100 TB 的数据,出于某种原因需要将其卸载到 S3。理想情况下,最终结果是一个 .csv 文件,对应于数据库中的每个表。

我有三种可能的方法,每种方法都有正面和负面。

COPY - 有一个问题已经回答了如何,但在分布式架构中 psql COPY 的问题是,这一切都必须通过主服务器,从而为 100TB 数据的移动造成瓶颈。

gpcrondump - 这将在每个表中创建 10 个文件,格式为制表符分隔,这需要一些后 gpcrondump ETL 将文件合并为单个 .csv,但它充分利用分布式架构并自动记录成功/失败的传输。

EWT - 利用分布式架构并将每个表写入单个文件,而不将其保存在本地内存中,直到构建完整文件,但可能是最复杂的脚本,因为您需要实现ETL,你不能单独做,在转储之后。

当我们在数据库中移动并找出哪些表失败时,所有选项都会遇到不同的表锁问题,以便我们可以重新解决它们以进行完整的数据传输。

您将使用哪种方法以及为什么?

【问题讨论】:

您不想使用 gpcrondump - 您最终得到的文件不仅包含 COPY 格式的数据,而且还包含恢复备份所需的额外 SQL 语句。 【参考方案1】:

我建议你使用 S3 协议。

http://www.pivotalguru.com/?p=1503

http://gpdb.docs.pivotal.io/43160/admin_guide/load/topics/g-s3-protocol.html

【讨论】:

查看链接后,您似乎建议构建外部可写表。我认为这就是我所倾向于的地方,这些链接提供了一些关于更精细点的说明。感谢您的帮助。 是的,外部可写表,但具体来说,直接将其写入s3。

以上是关于将 Greenplum 数据库以 .csv 格式导出到 Amazon S3的主要内容,如果未能解决你的问题,请参考以下文章

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

将csv文件导入greenplum外部表时如何转义换行符?

将csv文件格式的数据传到SQL2008数据库中后,表中的每一列都带有双引号,这个双引号怎样才能去掉?

在 java 上将 csv 文件加载到 GreenPlum 失败

在 GreenPlum 中插入

为啥将excel格式数据保存为csv格式时,开头为0的数据都把0丢失了呢??