SSIS:如何确定条件拆分中的列数

SSIS: how to determine column count in conditional split

我在 SSIS 工作。我正在将一个以竖线分隔、引号限定的平面文件拆分为单独的平面文件。平面文件参差不齐,即列数因记录类型不同而不同。我有 3 种记录类型——A、B 和 C。A 有 2 列,B 有 3 列,C 有 4 列。平面文件连接管理器仅定义了 1 列 [Column 0](我在其中将整行读取为 1 列)以允许列计数。我在确定每个记录类型是否具有正确数量的列的平面文件源之后有一个条件拆分。那些有不足/多余列的记录被写入错误平面文件。我对每种记录类型的条件非常简单:

LEN([Column 0]) - LEN( REPLACE([Column 0], "|", "") ) != x

其中 x 是给定记录类型的列数减去 1。(例如,由于 C 有 4 列,我希望 C 有 3 个竖线字符作为列分隔符。因此,对于 C,x = 3。 )

我 运行 遇到的问题是,这没有考虑到文件是引用限定的,即,我错误地替换了每列字符串中的竖线字符(只要字符串用引号括起来)。

有没有办法避免计算引号限定的竖线字符?

由于文件是引用限定的,我们可以拆分列之间的管道,而不是使用常规管道 | 进行拆分,即 "|".

因此条件拆分表达式变为(通过对引号使用转义序列 \" 并将其替换为任意长度为 1 的字符,例如 x:

LEN([Column 0]) - LEN(REPLACE([Column 0],"\"|\"","xx")) != x