我正在使用 SSIS 将数据从一个数据库导入另一个现有数据库。目标表中的某些列在源表中不存在。似乎导入和导出向导只允许我从源中选择未映射的列并将它们与目标中的这些新列匹配。我希望能够只提供一条数据以导入这些新列的所有行。如果可能的话,我想使用 GUI,因为我不擅长编写脚本。谢谢!
3 回答
In SSIS, you can add a "derived column" component that will add columns to the buffer rows with the value you want (either a string or an expression).
我不相信这在 GUI 中是可能的。但是,在使用 SSIS 加载数据后,这将是一个简单的脚本:
UPDATE table SET newcolumn = new value
如果您需要过滤行,只需添加
WHERE column = value ...
您可以将源更改为选择查询并列出列以及要映射的静态值。
SELECT SOURCECOLUMN_1,SOURCECOLUMN_2,....,SOURCECOLUMN_N,'VALUE' AS DESTINATIONCOLUMN FROM Source_Table
我最初的想法是您可以在 Import & Export 向导中直接使用查询。如果您进入并编辑软件包,您显然可以做更多事情,但听起来您对此没有太多经验。以下是您在向导中执行此操作的方法。
选择源数据库和目标数据库后,您可以指定表复制或查询。选择编写查询以指定要传输的数据选项
在下一个屏幕上输入列出所有列的查询并添加静态列。
在 Next 屏幕上,您将需要选择 Destination 表,否则它将默认创建一个名为Query的新表。您应该可以从下拉列表中进行选择。只要您使用相同的名称为额外的列添加别名,它就应该正确映射。如果需要,您可以在此处进入并编辑映射。
然后,您可以保存 SSIS 包,它将从查询中获取源。
或者,如果您已经创建了没有额外列的 SSIS 包,您可以进入数据流并将 OLE DB 源中的数据访问模式更改为 SQL 命令而不是表或视图。在此处添加您的查询。
然后,您可以进入数据流中 OLE DB Desitination 的属性并映射新列。您还可以通过添加派生列任务并将静态信息放在这里然后映射,将派生列添加为@DominicGoulet。如果您也想看到该解决方案,请告诉我。