使用 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 进行红移的主要内容,如果未能解决你的问题,请参考以下文章