【问题标题】:SSIS How do I suppress CR/LF in a flat file destination?SSIS 如何在平面文件目标中抑制 CR/LF?
【发布时间】:2018-12-27 16:57:49
【问题描述】:

我有一个错误报告,其中包含一个 .csv 平面文件的简单查询输出。生成的最后一列是 nvarchar(1000) 并包含通常在文本中包含 CR/LF 的注释。当您在 Excel 中打开 .csv 时,这些 CR/LF 会触发新列,因此第 6 列中的一半注释最终会出现在第一列的下一行。

当我在 SSMS 中运行查询时,我有一个查询选项“在复制或保存时保留 CR/LF”。如果我使用此选项将查询结果直接复制到 Excel,我会重新创建问题。如果我删除此选项,则结果没有中断。这就是我想要从我的 SSIS 包中得到的。

默认情况下,SSIS 在保存时保留 CR/FL,我找不到任何选项来关闭它。谁能指出我正确的方向?

【问题讨论】:

  • 您是否在平面文件目标连接管理器中设置文本限定符?您也可以使用不是 {CR}{LF} 的行分隔符。

标签: sql-server ssis newline flat-file


【解决方案1】:

我不知道在查询本身中处理这个是否适合您,但如果可以,您可以尝试使用 REPLACE 删除 CRLF:

SELECT
    col_first,
    col_second,
    ...
    REPLACE(REPLACE(col_last, CHAR(13), ''), CHAR(10), '') AS col_last
FROM yourTable;

【讨论】:

  • 感谢您的快速回复!我考虑了这一点,但决定它也会在每行末尾删除有效的 CR/LF。事实证明,你是完全正确的。成功了!
  • 您可能希望将替换文本更改为添加空格的内容。我可能会使用这样的东西:REPLACE(REPLACE(REPLACE(col_last, CHAR(13), '~'), CHAR(10), '~'), '~~', ' ')
  • @digital.aaron 是的,这是一个很好的建议,但是由于 OP 已经接受了这一点,我现在就让我的答案保持不变。
猜你喜欢
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多