mysql - 在 SSIS 包中使用临时表

标签 mysql sql-server ssis temp-tables

我正在编写一个从一个数据库到另一个数据库的基本文件转储。我正在使用 SSIS 2008 并创建多个包来将我拥有的数据从 MSSQL 2010 数据库转换为 MYSQL 5.1 数据库。

所有连接都已设置,记录可以在两个数据库之间传输,但我想在转换过程中使用临时表,并将临时表用作数据流任务中的 MSSQL 源,以将表转储到等待中MYSQL 表。

我在设置时遇到了问题。我正在使用 OLEDB 连接并将 RetainSameConnection 属性和 DelayValidation 属性设置为 true。将源图设置为来自 MSSQL 数据库的源时,我无法从控制流中找到我在早期任务中创建的临时表。我对这两项任务使用相同的连接管理器。

有人对此有任何想法或经验吗?

作为一个简单的例子,一个任务做..

SELECT * 
INTO #TMP
FROM CUSTOMERS

(这是一个简化的示例,在这种情况下我很高兴我可以只使用 Customers 表,所以请多多包涵) 是否可以在数据流操作中将此临时表用作源表?

最佳答案

正如我在评论中提到的,这不是解决方案,更多的是解决方法。 SSIS 使用结果集的形状来绑定(bind)任务中的属性。由于数据库中的临时表并不总是可用,即使您将 DelayValidation 设置为 true,这也可能导致 SSIS 出错。

我的解决方案是在您要连接的任何数据库中创建一个 SSIS 架构。这样做的原因是安全性和明确分离仅在 SSIS 包中使用的对象 - 主要是暂存表。

与其在 dbo 模式中添加表(无论如何你都不应该,真为你感到羞耻),不如在 SSIS 模式中创建它们。典型的数据流会在开始时截断表,加载值并执行所需的任何操作,并可选择在完成时截断它。只要表格始终可用,SSIS 就可以检查结果集的形状。

关于mysql - 在 SSIS 包中使用临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083129/

相关文章:

sql - 在 SQL Server 中删除全局临时表的索引

sql-server - 如何在 SQL Server 中将文本数据更改为数字?

SSIS 中的 Azure 下载任务因 400 错误而失败

sql - SSIS 中是否有用于平面文件源的 WHERE 子句功能?

mysql - Express引擎 : Custom query - Grouping entries daily

php - 如何连接模态中的连接值

mysql - Mysql 查找飞机名称,使所有获得驾驶资格的飞行员的收入超过 80,000 美元

mysql - 将 FLOAT 值插入 MySQL 中的 INT 列时如何获得警告?

sql - mysql @@identity 与 sql-server last_insert_id()

mysql - 如何查询 2 个 SQL 表并使用 1 个查询更改数据