如何使用SSIS在文本文件中制作相同长度的每条记录?

时间:2016-07-20 20:11:33

标签: ssis ssis-2012 ssis-2008 msbi

我有一个文本文件,其中每个记录长度都是变化的。我不在乎有多少列和列分隔符。我只是想使用SSIS来使它们的长度相等,可能是具有单列的固定宽度文件。我想为那些与其他记录相比具有较少字符强度的记录添加空间。我不知道文件中的最大长度是多少。

请与我分享一些知识......

谢谢!

1 个答案:

答案 0 :(得分:0)

脚本任务救援。假设你的平面文件每行都有统一的分隔符,即文件中的每一行都用逗号分隔,那么可以采用的方法是 -

  1. 拖动脚本任务转换并传递输入平面文件的文件路径
  2. 逐行开始阅读文件。
  3. 使用循环,获取分隔符的出现(可以使用Split函数获取计数)作为Key,将整行作为Value。将此结果集存储在字典对象中。
  4. 使用Dictionary.Keys.Max()函数从字典中获取Keys的最大值。 (基本上每行的分隔符出现次数最多)并将其存储在一个变量中,例如MaxCount。
  5. 现在遍历每个键/值对。对于Key值小于MaxValue的每一行,添加空的空分隔符,即如果每行的Max分隔符为5,并且该行中只有2,则为每个循环使用a附加3个空白分隔符,即' ,,,'
  6. 使用StreamWriter将字典的所有值都放入新文件中。
  7. 您需要使用System.IO和System.LINQ类来实现此目的。在SSIS 2008中使用时,请确保将Project Framework设置为3.5以使其正常工作。

    新文件将具有统一的长度。