SSIS:将不存在的列添加到 CSV 源

Posted

技术标签:

【中文标题】SSIS:将不存在的列添加到 CSV 源【英文标题】:SSIS: add non-existent column to a CSV source 【发布时间】:2016-08-24 09:58:08 【问题描述】:

我正在使用标准 SSIS 方法将一大组(成千上万个)CSV 文件加载到单个暂存 sql 服务器表中。

绝大多数源 CSV 文件具有相同的列结构(顺序、列集、数据类型)。总共有大约 140 列。

但是,在某些 (

如果(且仅当)物理源 CSV 文件中不存在该列,我能否以某种方式为源 CSV 连接创建一个“虚拟”列(填充 NULL/空/空白值)?

我知道我可以使用 C# 脚本组件读取 CSV 标头并创建多个源连接,并根据某些列的存在(或缺失)重定向到正确的数据流,但我希望更“优雅”解决方案,只需一个“智能”的 CSV 数据源就可以“人为地”添加源文件中缺少的空白列。

为简单起见,我们假设完整的列集是:

ID;C1;C2;C3

C3 偶尔会丢失,即一些 CSV 文件是:

ID;C1;C2

欢迎任何提示。

【问题讨论】:

【参考方案1】:

不,SSIS 中没有内置“智能”CSV 数据源。

您当然需要使用脚本组件,但您可以简单地创建一个具有脚本组件作为数据源的数据流,而不是在数据流之外使用脚本任务将控制流引导到正确的数据流.脚本组件读取当前正在导入的 CSV,如果相关列丢失,它会为其提供 NULL 或默认值。

【讨论】:

似乎合法,尽管我从未创建脚本组件作为数据源。总是有第一次 - 我会试一试。谢谢。

以上是关于SSIS:将不存在的列添加到 CSV 源的主要内容,如果未能解决你的问题,请参考以下文章

从 Powershell 将不存在的文件路径导出到文本文件

用逗号将 CSV 数据插入 SQL

Django:/ Login /上的TemplateDoesNotExist(源不存在)

NUGET源不存在,安装Nuget包提示“本地源不存在”

SSIS - 列名作为变量/以编程方式更改

如何在 SSIS 包中使用变量和 SQL 代码?