SSIS中如何实现对比两张表数据后再插入数据

Lee_jsmwj 2008-01-29 03:52:45
最近在做一个SSIS的数据提取程序,大概的流程是从A数据库的源表中提取需要的数据放入B数据库的目标表中,并把A中的源表内容删除。
现在碰到的问题是,碰到B的目标表中已经有了A的源表数据,那么插入就会失败。想先访问一下目标表,看看有没有与源表重合的数据,有的话先把源表数据删除再输入到目标表,可以实现吗,用哪几个task实现
...全文
240 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lee_jsmwj 2008-01-30
  • 打赏
  • 举报
回复
没人理我....
我顶~!
Lee_jsmwj 2008-01-29
  • 打赏
  • 举报
回复
谢谢!
顺便.....我顶~~
dawugui 2008-01-29
  • 打赏
  • 举报
回复
vb.net 就不会了.

帮顶.
Lee_jsmwj 2008-01-29
  • 打赏
  • 举报
回复
谢谢潇洒老乌龟的热情回答
但是我并非单纯的用SQL实现,使用的是SQL Server 2005 的SSIS功能,如果写代码的话也是用VB.NET,关键是用什么task跟各个参数怎么设定
dawugui 2008-01-29
  • 打赏
  • 举报
回复
不同服务器数据库之间的数据操作

--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '

--查询示例
select * from ITSV.数据库名.dbo.表名

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '

--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset

--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表

--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表


dawugui 2008-01-29
  • 打赏
  • 举报
回复
做个连接.

然后用 if object_id('servername2.db2.dbo2.A') is not null --表示存在.
drop table servername2.db2.dbo2.A

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧