繁体   English   中英

从SQL Server到Amazon Redshift的“数据加载”或“ ETL”工具

[英]Tool to “Data Load” or “ETL” — from SQL Server into Amazon Redshift

我试图找出一个不错的但简单的工具,可以将自己托管在AWS EC2中,这将允许我从SQL Server 2005中提取数据并推送到Amazon Redshift。 我基本上在SQL Server上有一个视图,在上面执行SELECT *,我只需要将所有这些数据放入Redshift中即可。 最大的担心是,有大量数据,并且这将需要可配置,以便我可以将其排队,作为近乎/连续的作业运行等。

有什么建议么?

alexeypro,

将表转储到文件中,则需要解决两个基本挑战:

  1. 将数据传输到亚马逊
  2. 将数据加载到Redshift表。

Amazon S3将在以下两个方面为您提供帮助:

  1. S3支持将文件从您的SQL Server位置快速上传到Amazon。 看到这篇伟大的文章 那是从2011年开始的,但几个月前我做了一些测试,结果非常相似。 我正在测试千兆字节的数据,并且16个上传器线程还可以,因为我不在骨干网中。 要记住的关键是压缩和并行上传是您的朋友,可以减少上传时间。

  2. 一旦数据在S3上,Redshift就支持通过COPY SQL命令从S3上的文件到表进行高性能的并行加载。 为了获得最快的加载性能,请根据表分配键对数据进行预分区,然后对其进行预排序,以避免昂贵的清理费用。 亚马逊的最佳实践充分记录了所有这些。 我不得不说这些家伙知道如何使事情变得整洁和简单,因此只需遵循以下步骤即可。

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

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

正如其他发布者所建议的那样,您可能也可以使用SSIS(或基本上任何其他ETL工具)。 我正在用CloverETL进行测试。 负责自动化过程以及对文件进行分区/预排序以进行加载。

现在,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 

借助现有的ETL工具,避免在Amazon(S3 / Dynamo)中暂存数据的另一种选择是使用商业DataDirect Amazon Redshift驱动程序,该驱动程序通过网络支持高性能负载,而无需额外依赖于暂存数据。

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

为了将数据导入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. 从EC2服务器在cron作业上dataduck etl all运行dataduck etl all ,以将所有表转移到Amazon Redshift

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

  1. 从SQL Server提取数据(使用sqlcmd.exe
  2. 压缩(使用gzip.GzipFile)。
  3. 分段上传到S3(使用Boto)
  4. 将其追加到Amazon Redshit表(使用psycopg2)。

同样,当我编写Oracle-To-Redshift-Data-Loader时,它对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM