如何将平面文件列分隔符设置为不可打印的字符

时间:2015-01-28 19:59:16

标签: ssis ssis-2012

我需要创建一个CSV文件,其列分隔符为CTRL-A。这可能与平面文件目的地有关吗?如果是的话,语法是什么?如果不是,是否有一个缺少自定义目的地的解决方案?

2 个答案:

答案 0 :(得分:1)

我还没有对此进行全面测试,但似乎可行。

  1. 使用标题创建模板平面文件。我使用Linqpad使用unicode字符串(\ u0001)创建Ctrl-A字符。你也可以使用\ x01到达ascii路径(相同的字符,如果你需要在代码中使用它,只需指出它)。这是我平面文件中的内容。

    ColumnA□ColumnB

  2. 创建平面文件目标,并创建新的平面文件连接。选择分隔作为类型。

  3. 浏览到您的平面文件模板,检查Unicode框(如果是unicode),如果数据应包含标题,也请检查该框。 FlatFileCOnnectionMgr
  4. 从模板中复制Ctrl-A字符并将其粘贴到Column delimiter框中。然后单击“刷新”按钮。 Delimters
  5. 您现在应该能够使用分隔的列。如果需要在代码中手动重新创建该字符,则可以始终使用\ x01或\ u0001。

答案 1 :(得分:1)

我对sorrell采取了类似的方法,但我的结果略有不同:

  1. 在SSMS中,创建字符并复制输出。请注意,如果将其粘贴到任何位置,这将看起来没什么。

    SELECT char(1)
    
  2. 编辑:

    enter image description here

    确保从结果窗口复制此查询的结果。你可以通过粘贴到记事本来确认你有它 - 它会显示光标移动一个空格。或者在记事本++中,它会显示一个突出显示的“SOH”

    我在这里找到了使用哪个小数:http://www.unix-manuals.com/refs/misc/ascii-table.html

    1. 将该值粘贴到平面文件管理器的Column Delimiter中: enter image description here
    2. 这是记事本中的输出:

      enter image description here

      更有趣的是,这就是它在Notepad ++中的样子(匹配起始标题文本 - 来自ASCII表的SOH我发布了上面的链接:

      enter image description here