在sis软件包中,我想映射从数据库中的表而不是从文件中提取的固定宽度数据列。 我知道可以通过使用文件连接管理器来做同样的事情。但是我想将表用作源而不是文件。
我已经使用OLE DB Source工具箱作为源并编写了一个SQL查询,该行将给我一行。
现在我必须根据来映射列,因为我们在File Connection Manager中获得了一个网格。
是否可以使用不使用“派生列”工具来执行此操作?
表中的值是FIXED-WIDTH数据。
答案 0 :(得分:1)
编写正确的SQL选择,以便您可以检索已拆分的值。与在SSIS上使用派生列(从可读性和维护性而言)相比,在SQL中执行此操作将更加容易。
对于SQL Server
上的示例,您可以对固定宽度列使用SUBSTRING
:
SELECT
FixedWidthColumn1 = SUBSTRING(T.FixedWidthColumn, 1, 20),
FixedWidthColumn2 = SUBSTRING(T.FixedWidthColumn, 21, 15),
FixedWidthColumn3 = SUBSTRING(T.FixedWidthColumn, 36, 14),
FixedWidthColumn4 = SUBSTRING(T.FixedWidthColumn, 51, 19),
FixedWidthColumn5 = SUBSTRING(T.FixedWidthColumn, 70, 100)
FROM
YourTable AS T