如何映射从数据库中的表而不是从SSIS包中的文件中获取平面文件数据的列?

时间:2018-07-19 10:41:33

标签: ssis ssis-2012

在sis软件包中,我想映射从数据库中的表而不是从文件中提取的固定宽度数据列。 我知道可以通过使用文件连接管理器来做同样的事情。但是我想将表用作源而不是文件。

我已经使用OLE DB Source工具箱作为源并编写了一个SQL查询,该行将给我一行。

现在我必须根据来映射列,因为我们在File Connection Manager中获得了一个网格。

是否可以使用不使用“派生列”工具来执行此操作?

表中的值是FIXED-WIDTH数据。

1 个答案:

答案 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