移动数据库表,进行一些转换 - SSIS

时间:2012-03-07 16:09:08

标签: sql-server ssis etl

我需要将数据从一个MS SQL数据库移动到另一个MS SQL数据库。但是,该目标数据库有点不同。例如,表具有相同的行,但具有不同的数据类型,依此类推。从我看来,它看起来像SSIS是工具,但是,工具箱中的过程和组件如何用于上面的例子?我担心的是我可能需要为每个表或类似的东西创建一个数据流源。无论如何,什么是耗时少的选项?

谢谢!

1 个答案:

答案 0 :(得分:3)

鉴于它是一次性任务且数据量很低,我将使用“导入/导出”向导生成移动所有这些表的基础知识。您可以右键单击SSMS中的数据库,任务,导出...或者只需从命令行运行DTSWizard.exe /开始 - >运行

无论哪种方式,你都会有一个向导引导你走过各种各样的屏幕。他们中的大多数是不言自明的,但从来没有阻止我评论。

前2个屏幕定义源和目的地。 “SQL Server Native Client 10.0”的默认值都是正确的,只需定义源服务器名称和目标服务器名称以及数据库/目录。

第3个屏幕接受来自一个或多个表或视图的默认Copoy数据。

第4个屏幕允许您选择源表,目标的默认值将是相同的表和架构。如果任何表具有标识列,您将需要单击“编辑映射...”按钮并选中“启用标识插入”选项。这需要按照表格进行。

第五屏非常重要。由于您需要在数据进入目标表之前对其进行操作,请取消选中“立即运行”(除非您感到幸运)并选中“保存SSIS包”。保存到文件系统,将程序包保护级别更改为“不保存敏感数据”

第6个屏幕询问应该保存包的位置以及应该调用的内容。我将它命名为so_Araujo并将其保存到c:\ sandbox \ ssishackandslash \ ssishackandslash \ so_Araujo.dtsx你在哪里和所谓的无关紧要,只需记下它的位置。

单击“完成”并查看操作。如果存在“插入只读列的失败”类型的任何错误,请记录,因为那些很可能是错过的身份插入。

打开Visual Studio,创建一个SQL Server Integration Services类型的新项目(在Business Intelligence部分下),然后右键单击该项目(我的名为SSISHackAndSlash)并选择Add,New Item ...选择您创建的包在第6个屏幕上,然后双击打开它。

“导入/导出”向导可以解决许多不相关的来源和放大器问题。目标一起在数据流中。由于这是一次性的,我不会那么关心这与让GUI添加所有表格并连接它们的速度相比。

现在可以将数据类型强制转换为正确的类型以及您需要完成的任何其他操作。您将查看Derived Columns TransformationsData Conversion Transformations的组合,然后重新映射目标表中的列。如果您有特殊问题,请唱出来。我可能做了一点SSIS;)

另一种解决方案是使用EzAPI编写大部分数据移动脚本,然后手动编辑需要按摩的20%。