使用 SSIS/SSDT 进行红移

Posted

技术标签:

【中文标题】使用 SSIS/SSDT 进行红移【英文标题】:Redshift with SSIS/SSDT 【发布时间】:2013-06-26 14:57:00 【问题描述】:

是否有人成功使用 Amazon Redshift 作为 SQL Server Data Tools 2012 中的源或目标 ODBC 组件?

我已经安装了 Amazon 提供的 PostgreSQL 驱动程序,并在 Windows ODBC 驱动程序管理器中成功测试了连接,但是当我选择我保存的 DSN 并尝试提取表列表时,仍然遇到神秘的错误消息。

【问题讨论】:

【参考方案1】:

Redshift 基于相当老的 Postgres (8.0) 版本。从那时起,Postgres 发生了很大变化,Postgres 工具也随之发生了变化。在下载任何与 Redshift 一起使用的工具时,您可能需要使用几年前的旧版本。

表列出问题特别烦人,但我还没有找到可以正确列出 Redshift 表的psql 版本。作为替代方案,您可以使用INFORMATION_SCHEMA 表来查找此类信息,在我看来,这是 SSIS/SSDT 默认应该做的。

我不希望 SSIS 能够可靠地将数据加载到 Redshift,即创建一个 Redshift 目标。这是因为 Redshift 并不真正支持 INSERT INTO 作为一种加载数据的方式。如果您使用INSERT INTO,您将只能每秒加载约 10 行。 Redshift 只能使用COPY 命令从 S3 或 DynamoDB 快速加载数据。

我尝试过的所有其他 ETL 工具都是类似的情况,尤其是开源工具 Pentaho PDI(又名 Kettle)和 Talend Open Studio。这在 Talend 的案例中尤其烦人,因为他们有 Redshift 组件,但他们实际上尝试使用 INSERT INTO 进行加载。即使是亚马逊自己的 ETL 工具 Data Pipeline 也不支持将 Redshift 作为“节点”。

【讨论】:

这是旧消息,但仅用于搜索谁的信息 - 即使在 2017 年(以及我记得的 2016 年)Talend 已经使用 COPY 从 S3 加载 Redshift【参考方案2】:

我已经成功了。尝试安装 32 位和 64 位版本的 PostgreSQL ODBC 驱动程序。

另外,在“配置属性”>“调试”下的项目属性中,将“Run64BitRuntime”设置为 False。

您也可以尝试在连接管理器中指定连接字符串。例如: 驱动程序=PostgreSQL ANSI; server=redshiftdb.d113klxjd4ac.us-west-2.redshift.amazonaws.com;uid=;database=;port=5432

【讨论】:

以上是关于使用 SSIS/SSDT 进行红移的主要内容,如果未能解决你的问题,请参考以下文章

使用 R 进行红移

使用胶水数据目录中定义的外部表红移光谱

在红移中插入

定期将数据从 S3 存储桶流式传输到红移

我使用红移光谱查询 S3 数据,但遇到保留字冲突问题

使用 talend 将 CSV 文件红移