如何将不同名称的文件加载到SSIS中的不同表?
How to load files with different names to different tables in SSIS?
我有两个这样命名的文件:
客户报告(08022021-08032021)
比较报告(08022021-08032021)
我需要将 CustomerReport 加载到 table,将 ComparingReport 加载到另一个 table。
我尝试了每个循环容器,但我想不出表达式将如何获取文件。
我在想像 Customer*.csv 这样的东西,其中 * 就像一个通配符,但没有用。在这种情况下我能做什么?
这里答案的关键是使用Foreach Loop
和Conditional Split
。
错误不要关注,因为我没有你的CSV文件和表格在DB里!
- 创建一个新变量
FileName
- 字符串数据类型
- 添加
foreach loop
并像截图一样设置
Collection 选项卡:
变量映射选项卡:
将Data Flow Task
添加到Foreach Loop
容器
像在图像上一样从工具箱中拖动元素
Flat File Source
使用 Flat File Connection Manager
连接到您的 CSV 文件之一,并在连接管理器上,在属性 > 表达式中,为 ConnectionString
设置一个变量 FileName
在图片上设置 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"
- 将
Conditional Split
连接到 OLE DB Destination's
注意:我不能运行打包,正如我在这个答案之上所说的,注意Conditional Split
,但这是方式您需要如何查找字符串的一部分是否包含在整个字符串中。
我有两个这样命名的文件: 客户报告(08022021-08032021) 比较报告(08022021-08032021) 我需要将 CustomerReport 加载到 table,将 ComparingReport 加载到另一个 table。 我尝试了每个循环容器,但我想不出表达式将如何获取文件。 我在想像 Customer*.csv 这样的东西,其中 * 就像一个通配符,但没有用。在这种情况下我能做什么?
这里答案的关键是使用Foreach Loop
和Conditional Split
。
错误不要关注,因为我没有你的CSV文件和表格在DB里!
- 创建一个新变量
FileName
- 字符串数据类型
- 添加
foreach loop
并像截图一样设置
Collection 选项卡:
变量映射选项卡:
将
Data Flow Task
添加到Foreach Loop
容器像在图像上一样从工具箱中拖动元素
Flat File Source
使用Flat File Connection Manager
连接到您的 CSV 文件之一,并在连接管理器上,在属性 > 表达式中,为ConnectionString
设置一个变量FileName
在图片上设置
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"
- 将
Conditional Split
连接到OLE DB Destination's
注意:我不能运行打包,正如我在这个答案之上所说的,注意Conditional Split
,但这是方式您需要如何查找字符串的一部分是否包含在整个字符串中。