我在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,{{1} }。)
我遇到的问题是,这并没有考虑到引用限定的文件,即我错误地替换了属于每个列的字符串的管道字符(只要string用引号括起来。)
有没有办法避免计算引用限定的管道字符?
答案 0 :(得分:0)
由于文件是引用限定的,而不是使用常规管道|
拆分,我们可以拆分列之间的管道,"|"
。
因此,条件分割表达式变为(通过使用引号的转义序列\"
并将其替换为任意1个长度的字符,例如x
:
LEN([Column 0]) - LEN(REPLACE([Column 0],"\"|\"","xx")) != x