【问题标题】:Set multiple row delimiters in Flat File Connection在平面文件连接中设置多个行分隔符
【发布时间】:2011-11-01 15:49:06
【问题描述】:

我们可以在 SSIS 中为平面文件连接设置行分隔符。但问题是如何将平面文件连接的多行分隔符设置为不using Script Component

例如对于包含此字符串的文本文件:

敏捷的棕色狐狸,跳过了懒惰的狗。

在使用 ',''.' 作为行分隔符后,我想拥有这两行:

快速的棕色狐狸

跳过懒狗

【问题讨论】:

  • 您已经找到了解决方案(脚本组件),但您还没有解释为什么不能使用它。除非您这样做,否则任何人都不太可能提供更多意见,因为您已经回答了自己的问题。

标签: sql-server ssis delimiter


【解决方案1】:

我在评论字段中的空间用完了,否则我会把它留在那里。这不是一个答案,因为它不起作用,可惜。

永远不要直接编辑 SSIS 包的 XML

当然,除非您将其置于版本控制之下,并且在销毁它时回滚。

我认为这是不可能的。我要尝试的下一个方法是直接处理 XML。我创建了上一个问题中使用的连接管理器的副本并摆弄了拨盘。

我观察到的是以下属性

  • HeaderRowDelimiter
  • 行分隔符
  • 列分隔符

对于原始连接管理器,它们都设置为 _x000D__x000A_。 0D0A 是十六进制的 CR/LF,所以我为我的 HeaderRowDelimiter 尝试了_x003B__x000D__x000A_。我打开包装,huzzah,它在常规选项卡上显示 {;}{CR}{LF}。

我将同样的方法应用于其他属性,看起来很有希望。我创建了一个数据流,使用了新的连接管理器并运行它,但不是像 OR 那样处理它,而是 AND 所以我只有 1 行数据流在管道中。我通过在第一行加上分号并点击预览来确认 AND 行为。然后显示 2 行。

如果这行得通,为了实现可变性,您可以在连接管理器上使用表达式来设置上述属性...

经过快速测试,我似乎仍然需要使用 XML 来让 CR/LF “接受”。粘贴十六进制代码不会在连接管理器中取消 XML 化。您可以在变量上创建一个表达式,然后粘贴一个 LF,但我不知道如何让 CR 显示。也许从另一个文档中粘贴。

无论如何,把这个留在这里,不是作为问题的答案,而是提供关于什么不起作用的指导。也许它会激发未来读者的想法。

【讨论】:

    【解决方案2】:

    简短的回答是普通的平面文件连接管理器没有这种能力。

    坦率地说,我很难想象这样一种业务情况,即有人以行分隔符不一致的平面文件向我发送数据。但是,如果我确实遇到了这种情况,我会使用一个脚本组件,就像@billinkc 对您之前的@​​987654321@ 问题的回答一样。

    【讨论】:

      【解决方案3】:

      您可以直接在框中直接给出分隔符,而不是从下拉列表中选择并保存。就我而言,我使用了“$#|”在文本框中,它对我来说很好。

      【讨论】:

        猜你喜欢
        • 2021-07-02
        • 2019-11-25
        • 2019-09-26
        • 1970-01-01
        • 2017-08-14
        • 2016-03-28
        • 1970-01-01
        • 2019-12-16
        • 2012-03-17
        相关资源
        最近更新 更多