注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
用MailSpy拦截局域网内危险的病毒
简单三步走堵死SQLServer注入漏洞
黑客攻破SQL服务器系统的十种方法
透明防火墙架设的完全攻略(brid
linux定时备份mysql数据库
qmail+vpopmail+sqwebmail的安装
qmail Vpopmail And sqwebmail H
qmail Vpopmail And sqwebmail H
qmail Vpopmail And sqwebmail H
qmail Vpopmail And sqwebmail H
您现在的位置: 顶尖设计 >> IT学院 >> 数据库 >> MS SQL >> 文章正文
SQLServer的几种数据传输方法
作者:佚名  来源:不详  点击:  更新:2006-12-20
简介:
本篇文章讨论的是有关数据库之间数据传送的问题,在实际的应用领域里都可以用到,具
  例如:公司目前数据库中的信息量不够,需要第三方的数据支持。
  这事就有几种情况了:
  1、对方直接提供数据库帐号,你可以直接访问(可能性很小)。
  2、对方把数据库的信息自动转换成.mdb;dbf;TXT等格式的文件,然后传到你的服务器上
  3、通过一个数据库接口程序,直接插到你的数据库中。
  这里还有个问题,无论对方提供的数据的结构是否和我们自己的一样,都不能直接插到我
们的库中,这样一旦有问题会破坏我们的数据库,那么我们怎么办呢?
  下面的文档会有很好的答案。
  具体示例:
  本篇文章讨论的是有关数据库之间数据传送的问题,在实际的应用领域里都可以用到,具
  例如:公司目前数据库中的信息量不够,需要第三方的数据支持。
  这事就有几种情况了:
  1、对方直接提供数据库帐号,你可以直接访问(可能性很小)。
  2、对方把数据库的信息自动转换成.mdb;dbf;TXT等格式的文件,然后传到你的服务器上
  3、通过一个数据库接口程序,直接插到你的数据库中。
  这里还有个问题,无论对方提供的数据的结构是否和我们自己的一样,都不能直接插到我
们的库中,这样一旦有问题会破坏我们的数据库,那么我们怎么办呢?
  下面的文档会有很好的答案。
  具体示例:
  本篇文章讨论的是有关数据库之间数据传送的问题,在实际的应用领域里都可以用到,具
  例如:公司目前数据库中的信息量不够,需要第三方的数据支持。
  这事就有几种情况了:
  1、对方直接提供数据库帐号,你可以直接访问(可能性很小)。
  2、对方把数据库的信息自动转换成.mdb;dbf;TXT等格式的文件,然后传到你的服务器上
  3、通过一个数据库接口程序,直接插到你的数据库中。
  这里还有个问题,无论对方提供的数据的结构是否和我们自己的一样,都不能直接插到我
们的库中,这样一旦有问题会破坏我们的数据库,那么我们怎么办呢?
  下面的文档会有很好的答案。
  一、数据库间的 COPY 导入导出等
  利用数据库自带的向导进行数据库之间的传递。
  好处:可以在不同的数据库接口间传递数据。
  缺点:传递数据的过程中不能对数据进行更改。
  技巧:可以利用任务(JOB)定时取需要的数据。
  二、利用脚本和任务(JOB)更改处理数据
  编写相关的数据库脚本,然后在任务(JOB)中运行。
  好处:可以更改插入的内容和插入的位置,使用灵活。
  缺点:要自己手写代码。
  技巧:可以配合导入导出,利用任务(JOB)实现强大的功能。
  具体示例:
  用途:把其它数据库服务器中的数据(.mdb;.dbf;sqlserver 等),定时导入自己的数据
库中使用,有个问题是“因为我们自己的数据库已经在使用,并且结构和要导入的数据库大不
相同,而且原数据库中的某些内容要调整”,所以我们利用了中间数据库。如图:
  
  具体的脚本程序:
  /*用途:把第三方提供的数据信息时时导入我们自己的数据库中。
  步骤:1、用 DTS (导入导出向导)把数据导入到中间数据库中,要设置任务定时导入。
2、编写下面的脚本,然后把它加在 DTS 任务的后一步,即运行完 DTS后在运行此脚本。 */
  declare @comid int,@comtitle nvarchar(255) --定义变量
  declare test cursor for --定义游标
  select DISTINCT comid,comtitle from dbA.dbo.infosociety where
  datediff(day,comdate,getdate()) < 1
  open test --打开游标
  fetch next from test into @comid,@comtitle

  while @@fetch_status = 0 --循环取数据
  begin
  declare @titletemp nvarchar(255)
  declare test1 cursor for
   select comtitle from dbB.dbo.tb_infogegu where comtitle=@comtitle and
   open test1
  fetch next from test1 into @titletemp
   if( @@fetch_status = 0) --表中该记录已经存在,删除该记录
   DELETE FROM dbA.dbo.infosociety WHERE comid=@comid
  Else --不存在时,插入该记录
   begin
   insert into dbB.dbo.tb_infogegu (comtitle,comcontent,
comchannel,comdate,tradetype,stockcode, fromdate)
  select top 1 comtitle,comcontent,comchannel,comdate,tradetype,stockcode,
fromdate from dbA.dbo.infosociety where comid=@comid order
  by comdate
   DELETE FROM dbA.dbo.infosociety WHERE comid=@comid
   end
  close test1
   deallocate test1
  fetch next from test into @comid,@comtitle

  end
   DELETE FROM dbA.dbo.infosociety
  close test
   deallocate test
  GO




  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务