需要有关基于变量的连接管理器的SSIS解决方案的建议

时间:2019-11-06 17:25:59

标签: sql-server ssis

我正在研究SSIS解决方案,以从特定文件夹中获取20个不同的txt文件,并将它们上传到不同的SQL Server数据库表中。我添加了带有table_name,file_name,file_path,full_connection_string的映射表。如何告诉连接管理器对某个文件使用哪个连接? 使用哪些变量/参数?在哪里?

我不希望有20个txt连接(已知的文件名差异)和20个数据库连接。 所有在线教程都很旧,与Visual Studio 2019 UI不匹配。

我们非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以具有参数连接字符串。

  1. 定义变量:_Server(字符串)
  2. 选择连接
  3. 在“属性”窗口中,选择[表达式]
  4. 将变量用于(SereverName)

很明显,您有一个循环,可以将正确的服务器名称加载到变量中,以便在每次迭代中,连接都将连接到特定的服务器。

enter image description here

答案 1 :(得分:1)

每个目标数据库都需要一个数据库连接管理器,因为它在数据库级别范围内。

对于每个唯一文件元数据,您将需要一个平面文件连接管理器。您可以有20个使用单个平面文件连接管理器的Sales-date.txt文件,然后表达式将负责使用不同的文件。

但是,如果您有Sales.txt和Customers.txt,则元数据(也就是文件中的列)将有所不同,这很好,但是您必须为其中的每一个创建一个平面文件连接管理器类型。这是您与SSIS引擎签订的合同-我保证该FFCM接触的所有文件均符合此标准。您还需要为每个FFCM都有一个数据流任务,因为引擎会根据源中的类型和列约束来一次计算可以处理多少行数据。

如果是我,我会花几天时间看看Biml。 Biml是商业智能标记语言,它所允许您做的就是以可重复的方式描述您的问题。即对于每种文件类型,我需要一个SSIS包,该包用于每个文件枚举器,以获取当前文件。在其中,一个数据流任务将提取文件。然后执行文件系统任务以将文件归档到工作文件夹之外。

您已经开始使用此路径标识元数据(table_name,file_name,file_path,full_connection_string),剩下的唯一事情就是描述文件的内容。如果您查看我的SO答案,将会发现大量使用Biml创建可重复解决方案的答案。