这个问题将成为关于SSIS项目中型进口项目最佳实践的纯粹组织问题。组织200多张桌子导入项目的最佳做法
因此,我有源数据库,不断充实新数据。然后我有一个临时数据库,我有时会从源数据库加载数据,以便我可以处理源数据库的副本并迁移当前系统。我实际上使用一个SSIS Visual Studio项目来导入这些数据。
我的问题是,我意识到我的项目的实际设计并非真正最佳,现在我想将此项目移动到SQL Server,以便我可以安排导入而不是手动运行Visual Studio项目。这意味着实际的项目需要进行清理和优化。
所以基本上,对于每个表,过程很简单:截断表,从源中提取并加载到目标中。我有大约200张桌子。由于源数据库一次仅接受一个连接,所以无法并行提取。那么你将如何设计这样一个项目?
我从微软的文档中看到,他们推荐每个软件包使用一个数据流,但管理200个不同的软件包似乎是不可能的,尤其是我将不得不链接进行调度。在另一方面一个封装与200的数据流似乎unamangeable太...
编辑21/11:
第一apporach我想,当启动该项目是自动提取我的表来使用通过在表名列表上迭代。如果我的源表和目标表具有所有相同的模式对象名称,但来自不同供应商(BTrieve和Oracle)的源数据库和目标数据库也具有不同的命名限制,那么结果可能会很好。例如,BTrieve不保留名称并允许超过30个字符名称,而Oracle不包含这些名称。所以这就是我如何用半自动列映射手动创建200个数据流(大部分是自动的)。
当为目标数据库生成CREATE TABLE查询时,我创建了一个可重用的C#库,其中包含用于生成新模式对象名称的方法,以防万一该方法可能自动化。如果有任何自定义工具来生成可以使用外部.NET库的软件包,那么这可能会有所斩获。
这实际上是我开发这个项目时想要使用的第一种方法,所以一切都会自动进行。但问题是我的源代码(BTrive)和登台(Oracle)具有非常不同的模式对象命名约定,因此无法自动映射列名称(例如,源数据库中的“时间”在我的目标中变为“TIME_” DB,因为“TIME”是Oracle中的保留字)。因此,所有这些数据流都必须手动配置。 – Ucodia