我目前正在开发一个使用ERP数据库中的SSIS 2008 r2构建数据集市的项目。
这些数据集必须在具有相同结构的每个数据库中使用(相同的表/字段)。
问题是源表名称根据连接的数据库而变化。但表格结构(元数据)在这些环境之间不会改变。
例如, 数据库1 项表名称为 company_name1 $ item 数据库2 项表名称为 company_name2 $ item
我正在寻找一种解决方案,使datamart可以用于两个数据库。
我做了一些研究;我发现我的解决方案可以像图中所解释的那样如图所示,构建数据集市需遵循以下步骤:
要构建数据集市,您需要提取信息和流程 他们通过ETL获得所需的数据集市。这个程序需要 适用于所有数据库
此过程可以通过名为
的erp数据库中的表来完成
object该表包含有关数据库的所有信息
表,但最有用的字段是表ID,表名和公司
名称
现在,我想使用这个表id,Name Company来选择正确的表,而不必根据表名选择数据,但是对象表和其他表之间没有链接,所以你需要创建一些类型代码或能够创建链接的东西。 在一个坚果壳中,当我想使用数据包的包时,我有插入是公司名称,并且将运行包来填充我的数据集市。
正如一些人所说,我应该使用这种类型的sql过程 使用YourDataBaseName;
CREATE PROCEDURE GetMyData
@aCompany NVARCHAR(50) = NULL,
@tbl_ID INT = 0
AS
SET NOCOUNT ON;
DECLARE @tableName NVARCHAR(50)
DECLARE @aQuery NVARCHAR(4000)
SELECT @tableName = [Name]
FROM [object]
WHERE [Company Name] = @aCompany AND [ID] = @tbl_ID
SET @aQuery = 'SELECT * FROM ' + @tableName
EXEC(@aQuery)
GO
其他一个也很有趣,表示SSIS允许在源和目的地中使用变量名。我只是需要提供使价值变化的机制。也许这是一个包含数据流或运行时参数集的foreach枚举器。 两个建议的解决方案都很棒,但仍然不清楚如何做到这一点,我希望现在我已经解释了我的问题,我会得到一个更具体的答案