SSIS:如何在特定索引处分隔列
SSIS: How to delimit columns at specific indexes
我有一个格式如下的文本文件:
+------------+-----------------+--------------+-----------+
| Field Name | Starting Column | Field Length | Data Type |
+------------+-----------------+--------------+-----------+
| ID | 1 | 12 | A |
| DATE | 13 | 8 | Date |
| NAME | 21 | 80 | A |
| ADDRESS | 101 | 12 | A |
| ... | ... | ... | ... |
+------------+-----------------+--------------+-----------+
我们可以看到这里"Starting Column"是列开头的索引。因此,结合字段长度的起始列为我们提供了每列的最大大小。
我一直在使用 Fixed Width
选项,它似乎有点管用,但我收到了这些奇怪的黑框,它们似乎正在改变一切。
那两个黑色字符是 Line Feed (LF-ASCII Char 10) 和 Carriage Return (CR- ASCII Char 13) 表示每行结尾的字符。
您会注意到屏幕截图中的每一行都移动了 2 磅。随后的行再移动 2 个点。第 2 行移动 4,第 3 行移动 6,依此类推。由于 SQL 将这些字符计入您的总固定宽度,因此您的行每行累计缩短 2。
要解决问题,请将红色的行尾行向左移动两个字符。您还需要调整最终的列宽以匹配规范。
在尝试了建议的解决方案并执行 more research I found this 线程后,我尝试了平面文件连接管理器中的 ragged right
选项,它解决了我的问题。正如@Jacob H 建议的那样,这两个黑色字符确实是换行符(LF-ASCII 字符 10)和 Carriage Return(CR-ASCII 字符 13)字符。
注意: 我还必须在我命名为 Ignore
的末尾添加一个额外的列。这是因为否则,它不会让我为最后一列添加数据长度信息。
我希望这对以后的其他人有所帮助,因为 ragged right
不是很直观。
我有一个格式如下的文本文件:
+------------+-----------------+--------------+-----------+
| Field Name | Starting Column | Field Length | Data Type |
+------------+-----------------+--------------+-----------+
| ID | 1 | 12 | A |
| DATE | 13 | 8 | Date |
| NAME | 21 | 80 | A |
| ADDRESS | 101 | 12 | A |
| ... | ... | ... | ... |
+------------+-----------------+--------------+-----------+
我们可以看到这里"Starting Column"是列开头的索引。因此,结合字段长度的起始列为我们提供了每列的最大大小。
我一直在使用 Fixed Width
选项,它似乎有点管用,但我收到了这些奇怪的黑框,它们似乎正在改变一切。
那两个黑色字符是 Line Feed (LF-ASCII Char 10) 和 Carriage Return (CR- ASCII Char 13) 表示每行结尾的字符。
您会注意到屏幕截图中的每一行都移动了 2 磅。随后的行再移动 2 个点。第 2 行移动 4,第 3 行移动 6,依此类推。由于 SQL 将这些字符计入您的总固定宽度,因此您的行每行累计缩短 2。
要解决问题,请将红色的行尾行向左移动两个字符。您还需要调整最终的列宽以匹配规范。
在尝试了建议的解决方案并执行 more research I found this 线程后,我尝试了平面文件连接管理器中的 ragged right
选项,它解决了我的问题。正如@Jacob H 建议的那样,这两个黑色字符确实是换行符(LF-ASCII 字符 10)和 Carriage Return(CR-ASCII 字符 13)字符。
注意: 我还必须在我命名为 Ignore
的末尾添加一个额外的列。这是因为否则,它不会让我为最后一列添加数据长度信息。
我希望这对以后的其他人有所帮助,因为 ragged right
不是很直观。