SSIS问题

zhongyuan8706 2010-09-28 08:12:06
数据库A中的tableA与数据库B的tableB结构上只差一个字段:字段1(tableA中没有,而tableB中有),
数据库C中的tableC与tableB的结构相同。
用SSIS完成如下任务:
tableA和tableB向tableC中导入数据!
...全文
261 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallfish0302 2010-11-18
  • 打赏
  • 举报
回复
直接用SSIS数据流的组件到就好了,tableA中没有的字段在tableC中是NULL值
Wilson伟庭 2010-11-16
  • 打赏
  • 举报
回复
问题没问清楚。。。
按字面意思的话。。。 直接从b导入c就好了~
扫冰者 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhongyuan8706 的回复:]
数据库A中的tableA与数据库B的tableB结构上只差一个字段:字段1(tableA中没有,而tableB中有),
数据库C中的tableC与tableB的结构相同。
用SSIS完成如下任务:
tableA和tableB向tableC中导入数据!
[/Quote]

问题没讲得很清楚,
A,B全导C?还是A,B共有的导C? 等等...
BIConsulting 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pbsh 的回复:]

两个数据流组件,做好映射就好了。
[/Quote]
按照3楼说的。
pbsh 2010-09-29
  • 打赏
  • 举报
回复
或者你先把tableA和tableB的数据Union起来扔到数据流的源里。
pbsh 2010-09-29
  • 打赏
  • 举报
回复
两个数据流组件,做好映射就好了。
dawugui 2010-09-28
  • 打赏
  • 举报
回复
如果三库不同机,需要先注册或链接,如下:
不同服务器数据库之间的数据操作

--创建链接服务器
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 本地表


然后再参考一楼的方法:
insert insert 计算机名c.数据库C..tableC  
select * from 计算机名b.数据库b..tableb
union all
select *,null 字段1 from 计算机名a.数据库a..tablea
--(注意字段1的位置,如果不对,需要进行相关调整。)
dawugui 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhongyuan8706 的回复:]
数据库A中的tableA与数据库B的tableB结构上只差一个字段:字段1(tableA中没有,而tableB中有),
数据库C中的tableC与tableB的结构相同。
用SSIS完成如下任务:
tableA和tableB向tableC中导入数据!
[/Quote]
如果三库同机。
insert insert 数据库C..tableC
select * from 数据库b..tableb
union all
select *,null 字段1 from 数据库a..tablea
--(注意字段1的位置,如果不对,需要进行相关调整。)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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