我们从供应商处获取每周数据文件(平面文件)以导入到SQL中,有时列名称会更改或添加新列.
我们目前拥有一个SSIS包来导入已定义的列.由于我们已经分配了映射,因此SSIS仅在列不存在时才会抛出错误.但是,当添加新列时(除了现有列)之外,它根本不会被导入,因为它没有被命名.这是我们关注的问题.
我们想要的是获取平面文件中存在的所有列的列表,以便我们可以在导入文件之前检查是否存在任何新列.
我对SSIS比较陌生,所以非常感谢详细的帮助.
谢谢!
最佳答案 我同意@TabAlleman提供的答案. SSIS无法原生处理动态列(并且您的SQL目标也可以).
我可以提出另一种选择吗?您可以在不使用C#脚本任务的情况下检测标头中的更改.一种方法是创建一个flafile连接,将整行读作一列.使用条件拆分可以丢弃标题行以外的任何内容.将该行保存到RecordSet对象.任何改变?发送电子邮件.
“Get Header Row”DataFlow看起来像这样.如果需要,Row Number.
控制流级别如下所示.使用ForEach ADO RecordSet对象将标题行值分配给SSIS变量CurrentHeader.
以上,先例约束(fx图标)
[@ExpectedHeader] == [@CurrentHeader]
[@ExpectedHeader] != [@CurrentHeader]
确定您是加载数据还是发送电子邮件.
希望这可以帮助!