SSIS 数据转换到 OLE DB 目标列映射
SSIS Data Conversion to OLE DB Destination column mapping
我正在使用 Visual Studio 2012 (Shell) 创建一个 SSIS 包,它将一个平面文件导入 SQL 服务器数据库 table.
我有一个平面文件源和一个 OLE DB 目标,中间有一个数据转换组件。
我使用数据转换工具将我的所有列从源转换为 Unicode 字符串 [DT_WSTR] 所以我不会出现 unicode 到非 unicode 的错误。
我保留了数据转换组件为列提供的默认输出别名,它只是原始输入列名称,前面添加了单词 "Copy of"。
我有 200 多列。当我双击我的目标组件并转到映射我的列时,我看到所有原始列名首先显示在要映射的可用列的下拉列表中,然后当我向下滚动到前 200 个原始列名时,我终于得到了我转换后的列名(那些说 Copy of 的)。
我不知道我之前是怎么做到的,但我所要做的就是按两次向下箭头键,它会从 "Column 0" 切换到 "Copy of Column 0" 所以我基本上是能够通过选项卡并快速映射列。 (制表符、制表符、向下箭头键、向下箭头键并重复)。
现在由于某种原因,我必须按向下箭头键超过 200 次才能通过所有原始列名,然后才能 select 转换后的列名,这将非常耗时 (并可能导致 RSI)。
我想知道我是否可以执行以下任一操作:
1) 当我映射 OLE DB 目标中的列时,只有转换后的列名称显示在可用的输入列中。
或
2)弄清楚我是如何在 select 输入列时按两次向下箭头键然后它会从原始列名称切换到转换后的列名称(而不必按向下箭头键超过 200 次以转到转换后的列名称)。
我会始终确保要输出到 table 的元数据列与目标列具有相同的名称,手动匹配具有不同名称列的列太容易出错了。相同的名称意味着您只需右键单击映射并按名称 select 映射。有几种方法可以解决这个问题:
第一个选项通过在名称后附加 X 来更改平面文件连接管理器中的列名 - 它们不必与实际文件中的名称相同,因为它都是按列位置工作的。然后在您的数据转换中,您可以从名称中删除 'Copy of' 和 X,并根据您的需要命名它。
第二个选项 - 在数据转换和 OLE DB 目标之间插入派生列任务。对于每个非 'Copy of' 列 select 替换匹配的 'Copy of' 列并将其添加到表达式中。
第三个也是我最喜欢的 - 在数据转换和 OLE DB 目标之间插入一个 Union All 任务。在 Union All 映射中,您可以通过编辑输出列名称字段来重命名任何列,并且可以右键单击任何列以将其删除。因此,您删除所有非 'Copy of' 列并重命名 'Copy of's 以提供您所需要的。使用 Union All 和一个输入有点奇怪,但它有效。
我正在使用 Visual Studio 2012 (Shell) 创建一个 SSIS 包,它将一个平面文件导入 SQL 服务器数据库 table.
我有一个平面文件源和一个 OLE DB 目标,中间有一个数据转换组件。
我使用数据转换工具将我的所有列从源转换为 Unicode 字符串 [DT_WSTR] 所以我不会出现 unicode 到非 unicode 的错误。
我保留了数据转换组件为列提供的默认输出别名,它只是原始输入列名称,前面添加了单词 "Copy of"。
我有 200 多列。当我双击我的目标组件并转到映射我的列时,我看到所有原始列名首先显示在要映射的可用列的下拉列表中,然后当我向下滚动到前 200 个原始列名时,我终于得到了我转换后的列名(那些说 Copy of 的)。
我不知道我之前是怎么做到的,但我所要做的就是按两次向下箭头键,它会从 "Column 0" 切换到 "Copy of Column 0" 所以我基本上是能够通过选项卡并快速映射列。 (制表符、制表符、向下箭头键、向下箭头键并重复)。
现在由于某种原因,我必须按向下箭头键超过 200 次才能通过所有原始列名,然后才能 select 转换后的列名,这将非常耗时 (并可能导致 RSI)。
我想知道我是否可以执行以下任一操作:
1) 当我映射 OLE DB 目标中的列时,只有转换后的列名称显示在可用的输入列中。
或
2)弄清楚我是如何在 select 输入列时按两次向下箭头键然后它会从原始列名称切换到转换后的列名称(而不必按向下箭头键超过 200 次以转到转换后的列名称)。
我会始终确保要输出到 table 的元数据列与目标列具有相同的名称,手动匹配具有不同名称列的列太容易出错了。相同的名称意味着您只需右键单击映射并按名称 select 映射。有几种方法可以解决这个问题:
第一个选项通过在名称后附加 X 来更改平面文件连接管理器中的列名 - 它们不必与实际文件中的名称相同,因为它都是按列位置工作的。然后在您的数据转换中,您可以从名称中删除 'Copy of' 和 X,并根据您的需要命名它。
第二个选项 - 在数据转换和 OLE DB 目标之间插入派生列任务。对于每个非 'Copy of' 列 select 替换匹配的 'Copy of' 列并将其添加到表达式中。
第三个也是我最喜欢的 - 在数据转换和 OLE DB 目标之间插入一个 Union All 任务。在 Union All 映射中,您可以通过编辑输出列名称字段来重命名任何列,并且可以右键单击任何列以将其删除。因此,您删除所有非 'Copy of' 列并重命名 'Copy of's 以提供您所需要的。使用 Union All 和一个输入有点奇怪,但它有效。