SSIS:如何在特定索引处分隔列

时间:2017-06-22 18:12:35

标签: ssis sql-server-2016

我有一个文本文件,其格式如下:

+------------+-----------------+--------------+-----------+
| Field Name | Starting Column | Field Length | Data Type |
+------------+-----------------+--------------+-----------+
| ID         |               1 |           12 | A         |
| DATE       |              13 |            8 | Date      |
| NAME       |              21 |           80 | A         |
| ADDRESS    |             101 |           12 | A         |
| ...        |             ... |          ... | ...       |
+------------+-----------------+--------------+-----------+

我们在这里可以看到"起始栏"是列开头的索引。因此,起始列与字段长度相结合,可以得出每列应该具有的最大大小。

我一直在使用Fixed Width选项,似乎有点工作,但我得到了这些奇怪的黑盒子似乎正在改变一切。

enter image description here

2 个答案:

答案 0 :(得分:2)

在尝试建议的解决方案并执行more research之后,我找到this线程,这导致我在平面文件连接管理器中尝试6选项,这解决了我的问题。这两个黑色字符确实是@Jacob H建议的换行符(LF-ASCII字符10)和回车符(CR-ASCII字符13)字符。

注意:我还必须在末尾添加一个名为ragged right的列。这是因为否则,它不允许我添加最终列的数据长度信息。

我希望将来帮助其他人,Ignore不是很直观。

答案 1 :(得分:1)

这两个黑色字符是换行符(LF-ASCII字符10)和回车符(CR-ASCII字符13)字符,表示每行的结尾。

您会注意到屏幕截图中的每一行都移动了2个点。随后的行移动了2个额外的点。第2行移位4,第3行移位6,等等。由于SQL将这些字符计入您的固定宽度,因此您的行累计缩短了2个。

要解决此问题,请将红色行尾行两个字符移到左侧。您还需要调整最终列宽以匹配规范。