如何将不同名称的文件加载到SSIS中的不同表?

How to load files with different names to different tables in SSIS?

我有两个这样命名的文件: 客户报告(08022021-08032021) 比较报告(08022021-08032021) 我需要将 CustomerReport 加载到 table,将 ComparingReport 加载到另一个 table。 我尝试了每个循环容器,但我想不出表达式将如何获取文件。 我在想像 Customer*.csv 这样的东西,其中 * 就像一个通配符,但没有用。在这种情况下我能做什么?

这里答案的关键是使用Foreach LoopConditional Split

错误不要关注,因为我没有你的CSV文件和表格在DB里!

  1. 创建一个新变量FileName - 字符串数据类型

  1. 添加foreach loop并像截图一样设置

Collection 选项卡:

变量映射选项卡:

  1. Data Flow Task添加到Foreach Loop容器

  2. 像在图像上一样从工具箱中拖动元素

  1. Flat File Source 使用 Flat File Connection Manager 连接到您的 CSV 文件之一,并在连接管理器上,在属性 > 表达式中,为 ConnectionString 设置一个变量 FileName

  2. 在图片上设置 Conditional Split 喜欢

Customer 的表达式是:

LEFT(
SUBSTRING(@[User::FileName],FINDSTRING((@[User::FileName]),"Customer",1),100),
FINDSTRING(SUBSTRING(@[User::FileName],FINDSTRING((@[User::FileName]),"Customer",1),100),"Report",1) - 1
) == "Customer"

  1. Conditional Split 连接到 OLE DB Destination's



注意:我不能运行打包,正如我在这个答案之上所说的,注意Conditional Split,但这是方式您需要如何查找字符串的一部分是否包含在整个字符串中。