用两个 csv 在 redshift 中填充相同的条目

Posted

技术标签:

【中文标题】用两个 csv 在 redshift 中填充相同的条目【英文标题】:Populate in redshift the same entry with two csv 【发布时间】:2017-07-14 13:05:11 【问题描述】:

例子:

CSV 1:键、d1、d2、d3

CSV 2:键、d4、d5

预计红移:key, d1, d2, d3, d4, d5

这可能吗?如果您知道该怎么做,请告诉我,但我最关心的是是否可以开始。

【问题讨论】:

【参考方案1】:

这样的直接复制是不可能的,你有以下选择:

1) 使用 Redshift Spectrum 服务 - 创建外部模式并使用连接查询它,以在 Redshift 中获取所需的数据结构。缺点是它是按次付费的服务。

2) 使用 Python 或 Athena 处理 CSV,将它们组合成所需的数据结构,然后复制它。

3) 将它们分别导入到两个临时表中,然后连接到最终表中。缺点是,如果您的数据很大,保留 2x 空间(一个用于暂存表,另一个用于结果表)可能会有问题,但您可以简单地使用连接创建视图。

【讨论】:

谢谢,我试图避免第二个并尝试做第三个。现在我知道了,我会稍微研究一下频谱服务。【参考方案2】:

直接,不,但您可以在原始 ETL 流程中加入对象,或者在 Redshift 中使用暂存表,然后将其具体化并删除暂存表。

【讨论】:

谢谢,我想我现在可以弄清楚怎么做,基本上我想知道我是否可以避免通过整个 ETL 过程来做到这一点,并在红移方面解决它。这样我就不必将数据移动到 EMR 以进行内部连接并稍后加载。 只需在 redshift 中进行连接,创建一个新的连接输出表,然后将其输入 EMR

以上是关于用两个 csv 在 redshift 中填充相同的条目的主要内容,如果未能解决你的问题,请参考以下文章

来自 S3 的 AWS Redshift COPY csv

在 S3 和 Redshift 之间测试数据

用 Redshift 中的第一个非空跟随值填充缺失值

从充满 CSV 文件的 AWS S3 目录中复制 Redshift

Redshift 在文本字段中使用逗号加载 CSV

Redshift - 在 where 子句中从 csv 传递值