Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SSIS使文本文件中的每条记录长度相等?_Ssis_Ssis 2012_Ssis 2008_Msbi - Fatal编程技术网

如何使用SSIS使文本文件中的每条记录长度相等?

如何使用SSIS使文本文件中的每条记录长度相等?,ssis,ssis-2012,ssis-2008,msbi,Ssis,Ssis 2012,Ssis 2008,Msbi,我有一个文本文件,其中每个记录的长度都是不同的。我不在乎有多少列和列分隔符。我只想使用SSI使它们的长度相等,SSI可能是一个具有单列的固定宽度文件。我想为那些与其他记录相比字符强度较小的记录添加空间。我不知道文件的最大长度是多少 请和我分享一些知识 谢谢 为救援任务编写脚本。假设您的平面文件每行都有统一的分隔符,即文件中的每一行都用逗号分隔,方法如下- 拖动脚本任务转换并传递输入平面文件的文件路径 开始逐行读取文件 在循环中,将分隔符的出现次数(您可以使用Split函数获取计数)作为键,将整行

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

请和我分享一些知识


谢谢

为救援任务编写脚本。假设您的平面文件每行都有统一的分隔符,即文件中的每一行都用逗号分隔,方法如下-

  • 拖动脚本任务转换并传递输入平面文件的文件路径
  • 开始逐行读取文件
  • 在循环中,将分隔符的出现次数(您可以使用Split函数获取计数)作为键,将整行作为值。将此结果集存储在dictionary对象中
  • 使用dictionary.Keys.max()函数从字典中获取键的最大值。(基本上是每行出现的分隔符的最高数量)并将其存储在变量(如MaxCount)中
  • 现在循环遍历每个键/值对。对于键值小于MaxValue的每一行,附加空的分隔符,即如果每行的最大分隔符为5,而该行中只有2个,则为每个循环使用一个附加的3个空分隔符,即“,,”
  • 使用StreamWriter将字典中的所有值获取到一个新文件中
  • 您需要使用System.IO和System.LINQ类来实现这一点。在SSIS 2008中使用时,请确保将项目框架设置为3.5以使其正常工作


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

    为救援任务编写脚本。假设您的平面文件每行都有统一的分隔符,即文件中的每一行都用逗号分隔,方法如下-

  • 拖动脚本任务转换并传递输入平面文件的文件路径
  • 开始逐行读取文件
  • 在循环中,将分隔符的出现次数(您可以使用Split函数获取计数)作为键,将整行作为值。将此结果集存储在dictionary对象中
  • 使用dictionary.Keys.max()函数从字典中获取键的最大值。(基本上是每行出现的分隔符的最高数量)并将其存储在变量(如MaxCount)中
  • 现在循环遍历每个键/值对。对于键值小于MaxValue的每一行,附加空的分隔符,即如果每行的最大分隔符为5,而该行中只有2个,则为每个循环使用一个附加的3个空分隔符,即“,,”
  • 使用StreamWriter将字典中的所有值获取到一个新文件中
  • 您需要使用System.IO和System.LINQ类来实现这一点。在SSIS 2008中使用时,请确保将项目框架设置为3.5以使其正常工作


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

    我的第一个想法是不,不要这样做。下一个想法是什么?是否希望连接管理器忽略分隔符并将“全部作为1”字段导入?如果是,请将delimters设置为不存在的组合(可能是管道|)。或者,您希望将分隔文件更改为固定宽度的文件,然后使用数据流并添加计算列,根据长度填充单元格。我首先想到的是“不,不要这样做”。下一个想法是什么?是否希望连接管理器忽略分隔符并将“全部作为1”字段导入?如果是,请将delimters设置为不存在的组合(可能是管道|)。或者,您希望将带分隔符的文件更改为固定宽度的文件,然后使用数据流并添加基于长度填充单元格的计算列