SSIS - 带有转义字符的平面文件

时间:2014-02-24 19:04:54

标签: file csv ssis flat

我有一个大的平面文件我用来恢复数据。它是使用双引号“作为限定符和管道|分隔符从系统导出的。可以将SSIS配置为没有问题,但我遇到的问题是使用\ escape char。

引起问题的行:

"125004267"|"125000316"|"125000491"|"height"|"5' 11\""|"12037"|"46403"|""|"t"|""|"2012-10-01 22:34:01"|"2012-10-01 22:34:01"|"1900-01-01 00:00:00"

数据库中的第四列应为5'11“。

我收到以下错误:

  

错误:0xC0202055在数据流任务1,平面文件源[2]:找不到列“posting_value”的列分隔符。

如何告诉SSIS处理\转义字符?

2 个答案:

答案 0 :(得分:0)

这可能不是您正在寻找的答案,但是......

我会联系数据源的技术联系人,并向他们解释如果他们要发送一个使用双引号作为文本限定符的文件,那么这意味着从来没有文中的双引号。如果可能,就像在这里发生的那样,告诉他们使用另一个文本限定符,或者根本不使用。

由于正在使用管道分隔符,具有文本限定符的重点是什么? 似乎多余。

答案 1 :(得分:0)

我知道这已经很老了,但我遇到了一个类似的问题,关于在SSIS中转发CSV中的引号。看起来奇怪的是没有更灵活的支持,但它支持VB风格的双引号。因此,在您的示例中,您可以预先解析文件以将其转换为

"125004267"|"125000316"|"125000491"|"height"|"5' 11"""|"12037"|"46403"|""|"t"|""|"2012-10-01 22:34:01"|"2012-10-01 22:34:01"|"1900-01-01 00:00:00"

获得所需的输出。这至少适用于Sql Server 2014。

这也适用于Excel(2010年测试)。但奇怪的是,只有在从文本文件中插入数据时才会这样做,而不是在用Excel打开CSV时。

这似乎是根据RFC 4180的标准化方法 哪个州

  

包含换行符(CRLF),双引号和逗号的字段          应该用双引号括起来

...

  

如果使用双引号括起字段,则使用双引号          出现在一个字段内必须通过前面的方式进行转义          另一个双引号。