【发布时间】:2021-06-15 16:57:02
【问题描述】:
我需要将 14 个具有不同列数的不同文件加载到同一个表中。许多列是相同的,但每个文件都有一些特定于它们的列。每个文件的名称表示该文件将具有的列。 例如,文件“Temporary_Employees.txt”总是有这些列:
合同 ID |个人ID |聘用日期 |合同工期小时数 |经理_ID
并且文件“PartTime_Employees.txt”将包含这些列:
合同 ID |个人ID |聘用日期 |每周小时数 |经理_ID
目标表包含所有列。
我是 SSIS 新手,我能想到的唯一解决方案是拥有 14 个数据流和 14 个平面文件连接......有没有更好的方法来做到这一点?
【问题讨论】:
-
您可以使用脚本块来创建和调用programmatic package:目标表包含所有可能的列;脚本块读取文件的标题行以确定源列;脚本块创建一个带有平面文件阅读器的程序包、一个目标表并映射它们之间的列。这适用于数百个不同的文件,但如果您只处理 14 个文件,则可能会付出更多的努力而不值得。
-
是否可以将您的 .csv/.txt 文件转换为 XML 格式?如果答案是肯定的,那么使用 SSIS XML Source Adapter 就很容易了。 XML 元素是可选的,并且缺少任何标记 - 它将作为 NULL 值加载。
标签: sql-server ssis oledb flat-file