hehe, 数据库设计不妥,target table中根本就不应该含有tel,address栏! 以name做关键字连接。 你可以做一个view来替代现在的target:create view viewTarget as select t.name,s.tel,s.address,isnull(t.mail,DefaultMail) as mail,isnull(t.dept,DefaultDept) as dept from source s left join target t on s.name=t.name
create view viewTarget as select s.name,s.tel,s.address,isnull(t.mail,DefaultMail) as mail,isnull(t.dept,DefaultDept) as dept from source s left join target t on s.name=t.nameline 2 : t.name --> s.name
先删除target中的资料,把所有数据(包含target表中的相关数据)select到一个临时表或内存中,再逐行insert到target表中。
那是不是定期更新必须用sql Job?触发器不合适,要把所有更改记录到其他地方,因为我的数据源不是单一的table,所以很麻烦。
如果非要用 DTS ,你也的写 js 或 vbs
然后在保存成 dts 包不过这比 vc 写数据库操作要简单的多
就是 vb 对数据库的操作
以name做关键字连接。
你可以做一个view来替代现在的target:create view viewTarget as
select t.name,s.tel,s.address,isnull(t.mail,DefaultMail) as mail,isnull(t.dept,DefaultDept) as dept from source s left join target t on s.name=t.name
select s.name,s.tel,s.address,isnull(t.mail,DefaultMail) as mail,isnull(t.dept,DefaultDept) as dept from source s left join target t on s.name=t.nameline 2 : t.name --> s.name