熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQLServer的幾種數據傳輸方法

2013-11-15 14:40:18  來源: SQL Server 

  本篇文章討論的是有關數據庫之間數據傳送的問題在實際的應用領域裡都可以用到具有實用價值
  例如公司目前數據庫中的信息量不夠需要第三方的數據支持
  這事就有幾種情況了
  對方直接提供數據庫帳號你可以直接訪問(可能性很小)
  對方把數據庫的信息自動轉換成mdb;dbf;TXT等格式的文件然後傳到你的服務器上
  通過一個數據庫接口程序直接插到你的數據庫中
  這裡還有個問題無論對方提供的數據的結構是否和我們自己的一樣都不能直接插到我們的庫中這樣一旦有問題會破壞我們的數據庫那麼我們怎麼辦呢?
  下面的文檔會有很好的答案
  具體示例
  本篇文章討論的是有關數據庫之間數據傳送的問題在實際的應用領域裡都可以用到具有實用價值
  例如公司目前數據庫中的信息量不夠需要第三方的數據支持
  這事就有幾種情況了
  對方直接提供數據庫帳號你可以直接訪問(可能性很小)
  對方把數據庫的信息自動轉換成mdb;dbf;TXT等格式的文件然後傳到你的服務器上
  通過一個數據庫接口程序直接插到你的數據庫中
  這裡還有個問題無論對方提供的數據的結構是否和我們自己的一樣都不能直接插到我們的庫中這樣一旦有問題會破壞我們的數據庫那麼我們怎麼辦呢?
  下面的文檔會有很好的答案
  具體示例
  本篇文章討論的是有關數據庫之間數據傳送的問題在實際的應用領域裡都可以用到具有實用價值
  例如公司目前數據庫中的信息量不夠需要第三方的數據支持
  這事就有幾種情況了
  對方直接提供數據庫帳號你可以直接訪問(可能性很小)
  對方把數據庫的信息自動轉換成mdb;dbf;TXT等格式的文件然後傳到你的服務器上
  通過一個數據庫接口程序直接插到你的數據庫中
  這裡還有個問題無論對方提供的數據的結構是否和我們自己的一樣都不能直接插到我們的庫中這樣一旦有問題會破壞我們的數據庫那麼我們怎麼辦呢?
  下面的文檔會有很好的答案
  一數據庫間的 COPY 導入導出等
  利用數據庫自帶的向導進行數據庫之間的傳遞
  好處可以在不同的數據庫接口間傳遞數據
  缺點傳遞數據的過程中不能對數據進行更改
  技巧可以利用任務(JOB)定時取需要的數據
  二利用腳本和任務(JOB)更改處理數據
  編寫相關的數據庫腳本然後在任務(JOB)中運行
  好處可以更改插入的內容和插入的位置使用靈活
  缺點要自己手寫代碼
  技巧可以配合導入導出利用任務(JOB)實現強大的功能
  具體示例
  用途把其它數據庫服務器中的數據(mdb;dbf;sqlserver 等)定時導入自己的數據庫中使用有個問題是因為我們自己的數據庫已經在使用並且結構和要導入的數據庫大不相同而且原數據庫中的某些內容要調整所以我們利用了中間數據庫如圖
  
  具體的腳本程序
  /*用途把第三方提供的數據信息時時導入我們自己的數據庫中
  步驟用 DTS (導入導出向導)把數據導入到中間數據庫中要設置任務定時導入編寫下面的腳本然後把它加在 DTS 任務的後一步即運行完 DTS後在運行此腳本 */
  declare @comid int@comtitle nvarchar() 定義變量
  declare test cursor for 定義游標
  select DISTINCT comidcomtitle from society where
  datediff(daycomdategetdate()) < 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 datediff(day,comdate,getdate()) = 0
   open test1
  fetch next from test1 into @titletemp
   if( @@fetch_status = 0) --表中該記錄已經存在,刪除該記錄
   DELETE FROM society 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 society where comid=@comid order
  by comdate
   DELETE FROM society WHERE comid=@comid
   end
  close test1 
   deallocate test1
  fetch next from test into @comid,@comtitle
  end
   DELETE FROM society 
  close test
   deallocate test
  GO
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22150.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.