mysql - 如何使用 ssis 将数据从 mysql 插入到 ssms
问题描述
我们如何插入新数据或将数据从一个表更新到另一个表,从 MySQL 到 SQL Server,使用 ssis 而不是使用查找。
解决方案
设计如下所示:
您将有 4 个表和 1 个视图:源、TMP_Dest(完全作为没有 PK 的源)、CHG_Dest(用于更改,完全作为没有 PK 的目标)、Dest(将有 PK)、FV_TMP_Dest(这是为了以防目标看起来不同于源 - 不同的字段类型)
SSIS 包:
1.使用 ExecuteSQLTask 并截断 TMP_Dest 因为它对于提取的数据只是临时的
使用 ExecuteSQlTask 并截断 CHG_Dest 因为它对于提取的数据只是临时的
使用一个 DataFlowTask 将数据从 Source 加载到 TMP_Dest
定义两个变量 OperationIDInsert=1 和 OperationIDUpdate=2 (值不重要,你可以随意设置)->你将在5.点下面使用它们
使用另一个 DataFlowTask,您将拥有:
在左侧 OLE DB 源中,您将从视图中提取数据,按 PK 排序(不要忘记从高级编辑器中为 PK 字段设置 SortKeyPosition)
在右侧的 OLE DB 源中,您将从 PK 排序的 Dest 中提取数据(不要忘记从高级编辑器中为 PK 字段设置 SortKeyPosition)
这之间的左连接
在左侧(“插入侧”),您将拥有:一个派生列,您将在其中将 OperationIDInsert 变量分配为表达式,以及一个用于在 CHG_Dest 表中插入数据的 OLE DB 目标。这样,您将插入必须插入到目标表中的数据,并且您知道这一点,因为您有 OperationIDInsert 列。
在右侧,您将执行相同的操作,但使用 OperationIDUpdate 列
您将在 ControlFlow 中使用 ExecuteSQLTask 并将有一个 SQL Merge。根据 PK 字段和 OperationIDInsert/OperationIDUpdate 字段,您将插入数据或更新数据。
希望这会帮助你。如果您需要更多信息,请告诉我。
推荐阅读
- git - 将git分支添加到头文件中的批处理文件
- php - 在 HTML 中生成链接/URL 预览
- python - 当使用 Telethon 在特定频道中发送消息时,如何运行操作?
- c++ - 为什么当我将光标悬停在快板x轴上从0到100的区域时程序突然关闭
- flask - 如何解决“AttributeError:'KNeighborsClassifier'对象没有属性'n_samples_fit_'”?
- php - 我可以使用 GroupDocs 向 CRM 添加电子签名功能吗
- postgresql - PostgreSQL - 在两列中进行两次选择
- php - 如何从 plesk 扩展执行 shell 命令
- javascript - 如果突变在另一个反应的副作用内,反应的副作用只会触发一次
- bash - OSX Catalina FV 和添加用户脚本