sql-server - SSIS - 从多个数据库导入相同的数据
问题描述
我想将数据从具有相同结构的表(在许多不同的源数据库中)复制并合并到目标数据库中具有相似结构的单个表中。有时我需要添加或删除源数据库。
目前,这是使用包含 OLEDB 源和 SQL 查询的数据流任务来实现的,在该 SQL 查询中,我从中提取的每个数据库都有一个 UNION。每个 UNION 中有相当多的 SQL,因此,如果我需要添加字段,我需要向每个 UNION 添加相同的附加 SQL。同样,当我添加或删除源数据库时,我需要添加或删除 UNION。
我希望,与其使用带有大量重复代码的 UNION,不如使用 Foreach 循环容器来执行包含在变量中的 SQL,使用参数替换数据库的名称和其中的其他数据库相关项每次迭代的 SQL,但我遇到了问题,因为我假设循环中的数据流任务无法解释传入的字段,因为使用的是有效的动态 SQL。
关于如何在不复制大量 SQL 的情况下最好地实现这一目标的任何建议?
解决方案
听起来您已经弄清楚了从数据库移动到数据库的循环。只要从数据库到数据库的表模式相同(除了提到的名称),这应该适合您。
在 For Each Loop 容器中,创建一个脚本任务或一个执行 SQL 任务,无论您使用哪个更舒服。
使用该任务动态生成 OLE DB 源查询的 SQL,更改每次迭代的客户代码前缀。将 SQL 文本分配给变量,可以直接在脚本任务中,也可以通过将执行 SQL 任务的结果集(结果集是查询文本)分配给变量。
在您的数据流任务中,在 OLE DB 源中,在数据访问模式下选择“来自变量的 SQL 命令”。选择您在上一个任务中使用查询填充的变量。
您还需要处理在迭代之间更改连接字符串,但是,听起来您已经掌握了该部分的句柄。
推荐阅读
- python - 通过发送 http get 请求从 JSON 响应中获取详细信息
- r - 使用分组条形图时如何在R代码中旋转ggplot2中的x轴
- java - 为什么从 Toolkit 获取屏幕尺寸会产生不同的结果,具体取决于是否存在 JFrame
- php - 在个人网站上显示 maps.googleapis.com JSON 数据(特别是 weekday_text 和 open_now)
- r - 如何使用 R 的 ggplot2 编辑圆环图的标签?
- python - 执行命令 pip install jinja 时出现此错误
- swift - 分段选择器删除了可访问性
- javascript - 输入隐藏的html5验证问题
- python - ImportError:无法导入名称“bigquery”
- pandas - 具有时间滞后的滚动平均值(在熊猫中)