首页 文章

如何使用SSIS传输数据

提问于
浏览
0

我是SSIS软件包的新手,只需要协助如何将数据从一个数据源传输到我自己的数据库 .

以下是我的数据流:

enter image description here

现在我有一个ODBC源(Http_Requests Source),我从PostgreSQL数据库表中获取数据(参见下面的表格列和数据截图):

下面是OLE DB目标,它有我想要传输数据的表(此表目前是空白的):

现在我尝试开始调试以提取数据,但是我收到了一些错误(如下所示):

enter image description here

我是一个完整的新手所以我想要一些指导我需要包含什么才能让这个SSIS包传输数据 . 我是否需要包含合并声明以及如何应用它 . 我听说你可以编写一个合并作为proc并在proc上调用sql命令 . 这是否意味着我需要在SSMS中编写一个proc然后在OLE DB Destination中调用它?

如果有人可以提供示例和截图,那么这将非常有用,因为我对SSIS来说真的很新 .

谢谢,

4 回答

  • 0

    检查目标表上的约束或在运行之前禁用它们 . 以下是您可以使用的查询 . - 禁用所有表约束ALTER TABLE YourTableName NOCHECK CONSTRAINT ALL - 启用所有表约束ALTER TABLE YourTableName CHECK CONSTRAINT ALL

  • 0

    勾选保留标识框或删除主键 . 应用更改后,请不要忘记通过打开sis中的映射来刷新元数据 .

  • 0

    该错误表示PerformanceId是目标表上的IDENTITY列 . 除非另有说明,否则IDENTITY列是只读的 . 因此,如果我们在tSQL中能够插入IDENTITY,我们将打开IDENTITY_INSERT . 因为您在SSIS中,所以您可以通过选中“保持身份”框来完成同样的事情 .

    HOWEVER 当你收到这样的错误时,通常表明你不应该将ID映射到Performance ID . 你要问的问题是你的来源的身份应该是目的地表的身份吗?通常不会,大多数情况下它将是另一列作为代理键 . 然后你必须了解它是否可能 . 因为如果存在唯一约束或主键,则身份不能重复,这意味着您必须知道源的id列不会导致重复的主键冲突 .

    如果要从源中取消选中ID并忽略该值,则很可能是实际修复 .

  • 0

    PerformanceID列(在目标中)几乎肯定是一个标识列,这就是它无法正常工作的原因 . 您可能不想传输它(并让SQL Server为PerformanceID生成值,或者您可以检查'保持身份' .

相关问题