分类: SQLServer
2018-01-10 14:05:00
现在是您熟悉Azure SQL数据仓库的好时机,而您的首个目标必然是将数据加载到该数据仓库中。 使用SSIS是您开展这一操作的好方法,而且在您选择其它方法之前,您值得信赖由SSIS支持的ETL流程。 Rob Sheldon为 们简单介绍了创建并运行ETL流程的方法。
· SQL数据仓库——第1部分:简介
· SQL数据仓库——第2部分:实施
· SQL数据仓库——第3部分:连接
· SQL数据仓库——第4部分:创建和查询
· SQL数据仓库——第5部分:加载数据
如果您正在迁移至SQL数据仓库,或者甚至刚刚开始尝试使用它,那么您很可能需要将数据(包括测试或样本数据)从SQL Server数据库加载到SQL数据仓库中。不出意料,微软为您提供了几个能执行此操作的选项,但在 看来,其中最简单的要属在SSDT中创建一个SQL Server集成服务(SSIS)包,并使用基本的SSIS组件来提取和加载数据了。
在本文中, 会向您演示如何使用SSIS将数据直接从SQL Server数据库复制到SQL数据仓库数据库中,还会向您提供 一直在使用的组件的具体细节。 如果您也想尝试这些示例,那您必须拥有活跃的Azure订阅,并且设置了一个资源组、V12逻辑SQL server以及SQL数据仓库数据库。
设置完SQL数据仓库数据库之后,您就可以使用SSIS将数据加载到数据库中了,这也是 们在本文中会完成的操作。但是,在开始之前, 得先提醒您:除非您在Azure提供的30天免费试用期内运行该服务或者您持有额外的MSDN积分,否则,将数据库添加到SQL数据仓库会产生Azure订阅费用。因此,请在正式开始之前确定您了解自己的订阅类型和费用结构。另外,当您没有使用数据库时,请确保您暂停了该数据库,以避免产生意外或不必要的费用。
将数据加载到SQL数据仓库中
尽管本文重点介绍的是使用基本的SSIS组件来将SQL Server数据加载到SQL数据仓库中,但您也应该清楚的是,微软还为您提供了其它几个复制数据的方法。
例如,您可以使用SSIS中的Azure Blob上传任务来简化数据加载过程。该任务是专用于Azure的SQL Server 2016 集成服务功能包中的一个部分,目前仍在开发当中。据微软所述,这是将SQL Server数据加载到SQL数据仓库的最快方式。但是,您为此必须使用SSIS 2016,并且要对Azure Blob存储进行设置。
认为该数据加载过程是这样进行工作的:您将SQL Server数据转储到本地文件中,并使用Azure Blob上传任务将这些文件上传到Azure Blob存储内,然后再运行将数据加载到SQL数据仓库的PolyBase脚本。 据微软称,PolyBase可以使用SQL数据仓库中的大规模并行处理(MPP)架构,来从Azure blob存储中并行加载数据,而这是SSIS无法单独完成的操作。
关于在Azure Blob 存储中加载数据的速度比直接从SQL Server加载数据要快多少的问题, 并没有看到任何能对其进行衡量的指标。毫无疑问,将数据转储到文件中,并将文件复制到Azure上,然后再将数据加载到SQL数据仓库中会产生开销。
运行针对SQL数据仓库的并行SSIS包或数据流任务可能会帮您抵消一些使用基本SSIS组件来加载数据的限制。但是, 目前也没有看到任何能评估该方法的指标。
从某种程度上来说,对上述两种方法进行测试,并使用足够的数据来对结果进行有意义的比较是值得一试的。与此同时,您决定采用哪种方法可能取决于您拥有多少数据、时间、以及是否要添加使用Azure Blob 存储附带的复杂性,因为您其实可以使用SSIS中的基本组件来获得相同的结果。
如果您觉得PolyBase模型听起来不错,那么只要您的数据量不超过10 TB,您就可以跳过SSIS,转而使用AZCopy了。 AZCopy是一种命令行实用工具,您可以从微软官网上下载这一工具,以便您将本地数据文件复制到Azure存储中。然后,您就可以运行PolyBase脚本,从而将数据加载到SQL数据仓库中了。不过,您仍然需要将数据从SQL Server导出到平面文件中,接着在这些文件加载到SQL数据仓库之后,把它们从Azure存储中删除。而且,对于较小的一次性操作来说,这可能也是一个可行的方法。
如果您的数据量超过了10 TB,那您可以考虑使用微软的导入/导出服务。 在这种情况下,您还是需要将SQL Server数据转储到平面文件中,不过这次您是将文件复制到可传输磁盘中,并将这些磁盘发送给微软的。随后,微软的技术人员就会帮您把数据加载到SQL数据仓库中。
另一方面,如果您只需加载少量SQL Server数据(如查找或样本数据),那您可以考虑使用bcp这一实用工具。据微软表示,您应该首先用它将数据从SQL Server导出到平面文件中,然后再用它来将平面文件中的数据导入进SQL数据仓库。主机资讯news.webhostingtalk.cn
视不同情况而定,这些选项都可能是有用的方法。但是,只有SSIS和SSDT中的内置基本工具才能支持您将数据直接且轻松地从SQL Server数据库移动到SQL数据仓库数据库中。 这意味着,如果您在Visual Studio中创建并运行了SQL Server,而且还设置了SSDT,那您就可以将数据加载到SQL数据仓库中,而无需安装任何特殊组件或创建任何Azure新帐户了。