我对ssis很新。
我的问题类似于帖子:Flat File to retain commas from SQL data
但不幸的是我还没有得到任何许可。
基本上在SSIS包中,我有
在将记录填充到指定的平面文件时,地址中的逗号被视为分隔符,因此错误地填充了所有值。
问题:
我已经介绍了引用字符串的一些建议,以便可以转义一个字段中的逗号。如果这是一个解决方案,那么我应该在哪个ssis步骤引用我的地址字符串?
SSIS如何阅读vs SSIS如何添加分隔符(可能导致脑损伤) SSIS希望我们指定它应该如何读取条件拆分的输出。但想想看,从我的步骤开始就不应该知道了:OLEDB到FUZZY到条件分割列都被正确地格式化为列。不应该问你想如何划分你的价值观吗?就像你有一个excel并且想要将它们转换为平面文件一样,它会提示你是否要将它用逗号分隔或制表符分隔。当您指定CSV时,它只是在您的所有单元格值之间添加逗号(无论您的单元格中是否有逗号)。
请忍受我的愚蠢。
答案 0 :(得分:0)
在将记录填充到指定的平面文件时,地址中的逗号被视为分隔符,因此错误地填充了所有值。
因此,您应该避免使用逗号作为分隔符并使用通常不会出现在自由文本中的内容。下一个最常用的分隔符是TAB,如果你使用它,你不太可能面对这个问题
如果您真的想使用逗号,那么您可以使用引号的“文本限定符”,但这只意味着您有两个字符会导致问题:逗号和报价!
我应该引用我的地址字符串?
不要这样做 - 只需使用制表符分隔符(或者更不常见的东西,如〜或`。如果你真的想这样做,它应该在某个地方的输出组件中
SSIS如何读取vs SSIS如何添加分隔符(可能导致脑损伤)SSIS希望我们指定它应该如何读取条件分割的输出。但想想看,从我的步骤开始就不应该知道了:OLEDB到FUZZY到条件分割列都被正确地格式化为列。不应该问你想如何划分你的价值观吗?就像你有一个excel并且想要将它们转换为平面文件一样,它会提示你是否要将它用逗号分隔或制表符分隔。当您指定CSV时,它只是在您的所有单元格值之间添加逗号(无论您的单元格中是否有逗号)。
我不熟悉那些组件,但是,在内部,您永远不必担心分隔符 - 它已经知道哪些是单独的列
这里真正的误解是双击csv文件并在Excel中打开它。 Excel猜测分隔符。当您在excel中打开制表符分隔的csv文件时,它已将分隔符猜为逗号,打开它,并认为所有内容都在一列中
如果在excel中使用“text to columns”并告诉它使用tab,它将正确显示该文件。不仅如此,它还会记得下次。
实际上,您导出的文件是可以在记事本中打开的文本文件。如果您在记事本中打开制表符分隔文件,您会看到列中整齐排列的所有内容。当然,记事本不是最好的数据分析工具。
您导出这些文件的目的是什么?如果目的是将数据上传到其他系统,则使用制表符分隔符。
如果目的是让最终用户打开文件并检查/分析它,那么导出为excel可能是一个不那么混乱的解决方案
请注意,excel格式是上传到其他系统的错误选项,因为excel驱动程序有一些非常奇怪的行为。
答案 1 :(得分:0)
重组整个帖子:
我的问题是,当我将数据从SQL加载到平面文件并且我在某些列中有逗号(,)时,我的值会偏离轨道并最终出现在错误的列中。我一直来回设置列分隔符,当我重新加载数据流时,它不知道它不会保存。
错误在于我假设SQL将数据作为CSV加载到平面文件中,但事实上并非如此。它依赖于您创建的目标文件。如果我错了,请纠正我,在excel中创建制表符分隔符(txt)与在记事本中创建的普通文本文件不同。我的解决方案是在excel中创建制表符分隔文件。 SSIS可以以某种方式识别并且不以默认加载为逗号分隔。
Nick从未尝试过的一件事是你没有创建任何输出文件,只是在SSIS中定义它并让它自己管理。
我经历了很多线程,许多人都面临着这个问题,但没有答案。我希望这有帮助!