【发布时间】:2012-11-20 08:41:28
【问题描述】:
这个问题将是关于 SSIS 项目中型导入的最佳实践的纯粹组织问题。
所以我有源数据库,它不断被新数据丰富。然后我有一个临时数据库,有时我会从源数据库加载数据,这样我就可以处理源数据库的副本并迁移当前系统。我实际上是在使用 SSIS Visual Studio 项目来导入这些数据。
我的问题是我意识到我的项目的实际设计并不是真正优化的,现在我想将此项目移动到 SQL Server,以便我可以安排导入而不是手动运行 Visual Studio 项目。这意味着实际项目需要清理和优化。
所以基本上,对于每个表,过程很简单:截断表,从源中提取并加载到目标中。我有大约200张桌子。提取不能并行化,因为源数据库一次只接受一个连接。那么你会如何设计这样一个项目呢?
我从 Microsoft 文档中了解到,他们建议每个包使用一个数据流,但管理 200 个不同的包似乎是不可能的,尤其是我必须链接来安排导入。另一方面,包含 200 个数据流的单个包似乎也无法处理......
21/11 编辑:
开始这个项目时我想使用的第一个方法是通过迭代表名列表来自动提取我的表。如果我的源表和目标表具有所有相同的模式对象名称,这可能会很好,但是源和目标数据库来自不同的供应商(BTrieve 和 Oracle),它们也有不同的命名限制。例如,BTrieve 不保留名称并允许超过 30 个字符的名称,而 Oracle 不允许。这就是我最终使用半自动列映射(大多数是自动的)手动创建 200 个数据流的方式。
在为目标数据库生成 CREATE TABLE 查询时,我创建了一个可重用的 C# 库,其中包含生成新模式对象名称的方法,以防万一该方法可以自动化。如果有任何自定义工具可以生成可以使用外部 .NET 库的包,那么这可能会奏效。
【问题讨论】:
标签: ssis project-organization ssis-data-flow