工具到"数据加载"或者" ETL" - 从SQL Server到Amazon Redshift

时间:2014-05-21 02:35:17

标签: sql sql-server amazon-web-services etl

我正在尝试找出体面但简单的工具,我可以在AWS EC2中托管自己,这将允许我从SQL Server 2005中提取数据并推送到Amazon Redshift。 我基本上在SQL Server中有一个视图,我正在做SELECT *,我需要把所有这些数据放到Redshift中。最大的问题是有很多数据,这需要是可配置的,所以我可以排队,作为一个高度/连续的工作运行等。

有什么建议吗?

5 个答案:

答案 0 :(得分:4)

alexeypro,

将表转储到文件,然后您需要解决两个基本挑战:

  1. 将数据传输到亚马逊
  2. 将数据加载到Redshift表。
  3. Amazon S3将帮助您:

    1. S3支持从SQL服务器位置快速将文件上传到Amazon。见great article。它是从2011年开始的,但几个月后我做了一些测试,结果非常相似。我正在使用千兆字节的数据进行测试,并且16个上传器线程都可以,因为我不在骨干网上。要记住的关键是压缩和并行上传是你的朋友,以减少上传时间。

    2. 一旦数据在S3上,Redshift支持通过COPY SQL命令从S3上的文件到表的高性能并行加载。要获得最快的加载性能,请根据表分发键对数据进行预分区,并对其进行预排序以避免昂贵的真空吸尘器。所有这些都在亚马逊的best practices中有详细记录。我不得不说这些家伙知道如何让事情变得整洁干净。简单,所以只需按照步骤操作即可。

    3. 如果您是编码员,您可以使用您想要的任何shell /语言的脚本远程协调整个过程。您需要工具/库来并行HTTP上传到S3和命令行访问Redshift(psql)以启动COPY命令。

      另一个选择是Java,有用于S3上传和JDBC访问Redshift的库。

      正如其他海报所示,您也可以使用SSIS(或基本上任何其他ETL工具)。我正在使用CloverETL进行测试。负责自动化流程以及分割/预分配文件以进行加载。

答案 1 :(得分:2)

现在,Microsoft发布了SSIS Powerpack,因此您可以本机化。

SSIS Amazon Redshift数据传输任务

Very fast bulk copy from on-premises data to Amazon Redshift in few clicks
Load data to Amazon Redshift from traditional DB engines like SQL Server, Oracle, MySQL, DB2
Load data to Amazon Redshift from Flat Files
Automatic file archiving support
Automatic file compression support to reduce bandwidth and cost
Rich error handling and logging support to troubleshoot Redshift Datawarehouse loading issues
Support for SQL Server 2005, 2008, 2012, 2014 (32 bit and 64 bit) 

为什么选择SSIS PowerPack?

High performance suite of Custom SSIS tasks, transforms and adapters 

答案 2 :(得分:0)

使用现有的ETL工具,避免在亚马逊(S3 / Dynamo)中暂存数据的备用选项是使用商业DataDirect Amazon Redshift驱动程序,该驱动程序支持线上的高性能负载,而无需额外依赖于分阶段数据。

https://blogs.datadirect.com/2014/10/recap-amazon-redshift-salesforce-data-integration-oow14.html

答案 3 :(得分:0)

为了将数据导入Amazon Redshift,我制作了DataDuck http://dataducketl.com/

它就像Ruby on Rails,但用于构建ETL。

为了让您了解设置的简便性,以下是将数据导入Redshift的方法。

  1. gem 'dataduck'添加到您的Gemfile。
  2. 运行bundle install
  3. 运行datatduck quickstart并按照说明
  4. 这将自动生成表示要迁移到数据仓库的表和列的文件。您可以修改这些以对其进行自定义,例如删除或转换部分列。
  5. 将此代码提交到您自己的ETL项目存储库
  6. Git拉取EC2服务器上的代码
  7. 在EC3服务器上的cron作业上运行dataduck etl all,将所有表格转移到Amazon Redshift

答案 4 :(得分:0)

为什么不用Python + boto + psycopg2脚本? 它将在EC2 Windows或Linux实例上运行。 如果是OS Windows,你可以:

  1. 从SQL Server中提取数据(使用sqlcmd.exe
  2. 压缩它(使用gzip.GzipFile)。
  3. Multipart将其上传到S3(使用boto)
  4. 将其附加到Amazon Redshit表(使用psycopg2)。
  5. 同样,当我写Oracle-To-Redshift-Data-Loader

    时,它对我有用