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

File SSIS-带转义字符的平面文件,file,csv,ssis,flat,File,Csv,Ssis,Flat,我有一个用来恢复数据的大平面文件。它是从系统中导出的,使用双引号“作为限定符,管道| a作为分隔符。SSIS可以毫无问题地配置为此,但遇到问题的是\escape字符 导致问题的行: "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

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

导致问题的行:

"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”的列分隔符


如何告诉SSI处理
\
转义字符

这可能不是你想要的答案,但是

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

既然使用了管道测径仪,那么使用文本限定符有什么意义呢?
这似乎是多余的

我知道这很老了,但我刚刚遇到了一个类似的问题,关于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时

这看起来确实是标准化的方法 哪个州

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

如果使用双引号括起字段,则使用双引号 出现在字段中时,必须在其前面加上 另一个双引号


事实并非如此。使用双引号作为文本限定符并不意味着内容中没有双引号。使用双引号来转义内容中的双引号是常见的(事实上甚至是标准的?),这一点很好。我的经验(只是我的,ymmv)当这种情况发生时,文件的开发人员更愿意更改delimeter字符,然后编写代码将转义字符插入内容。用双引号转义似乎会破坏SSI。我无法找到这方面的文档,因此我认为这种技术正式“在我的机器上工作”认证。是的,不太清楚为什么。对于我们的数据,用单引号替换它们是可以接受的解决方法。在进一步搜索后添加了一些信息