把Excel表中的數據導入數據庫(存儲過程、數據庫作業)


【標題】
      把Excel表中的數據導入數據庫

【需求】
          在實現競價網站時,需要把Excel表中的數據週期地有條件地導入到網站位表中。這裏結合數據庫作業實現。

【步驟】

1、生成一個Excel表
   工作表名稱:website
   包含的列:spID,spName,spIniPrice,spIncExtent,spNowPrice,spImage,spBidNum,spAucType,spBAucDT,spEAucDT,spStat,buyerID,siteName,siteUrl
 
   部分截圖:
 

2、存儲過程
 
--1、涉及到的表:WL_SitePosition(網站位表),WL_ComSite(競價網站表),Excel表(需要物理路徑)
--2、功能:若網站位表不存在記錄,則從Excel表中導入;反之,把網站位表中的記錄導入到競價網站表,
--同時,清空網站位表,之後再把Excel表中的數據導入到表WL_SitePosition;


CREATE PROCEDURE wl_JOB_WebsiteAuction AS

Declare @err1 int
Declare @err2 int
Declare @err3 int
Declare @err4 int
Declare @err5 int
Declare @err6 int

SET @err1 = 0
SET @err2 = 0
SET @err3 = 0
SET @err4 = 0
SET @err5 = 0
SET @err6 = 0

SET NOCOUNT ON
--設置事務隔離級別
--SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
--OLE/DB provider  不支持隔離層
Begin Tran --開始事務

  --SET XACT_ABORT ON --

   if (select count(*) from WL_SitePosition)>0
 begin
  --把數據從網站位表中導入到競價網站表  
  TRUNCATE TABLE WL_ComSite --清空競價網站表
  SET @err1 = @@error
  
  --把數據從網站位表中導入到競價網站表中
  insert into WL_ComSite(cSiteName,cSiteUrl,cSiteVDT,spID,buyerID)
  select siteName,siteUrl,DATEADD(day,7,spEAucDT) as cSiteVDT,spID,buyerID
  from WL_SitePosition order by spID
  SET @err2 = @@error

  TRUNCATE TABLE WL_SitePosition--清空網站位表
  SET @err3 = @@error
  
  --把數據從Excel表導入到網站位表中
  insert into WL_SitePosition(spID,spName,spIniPrice,spIncExtent,spNowPrice,spImage,spBidNum,spAucType,spBAucDT,spEAucDT,spStat,buyerID,siteName,siteUrl)
  SELECT spID,spName,spIniPrice,spIncExtent,spNowPrice,spImage,spBidNum,spAucType,spBAucDT,spEAucDT,spStat,buyerID,siteName,siteUrl
  FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:/work/我傲/競拍設計/webSitePosition_Data.xls";Extended Properties="Excel 8.0";Persist Security Info=False')...[website$]
  SET @err4 = @@error
     
 end
   else
 begin
  
  
  --把數據從Excel表導入到網站位表中
  insert into WL_SitePosition(spID,spName,spIniPrice,spIncExtent,spNowPrice,spImage,spBidNum,spAucType,spBAucDT,spEAucDT,spStat,buyerID,siteName,siteUrl)
  SELECT spID,spName,spIniPrice,spIncExtent,spNowPrice,spImage,spBidNum,spAucType,spBAucDT,spEAucDT,spStat,buyerID,siteName,siteUrl
  FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:/work/我傲/競拍設計/webSitePosition_Data.xls";Extended Properties="Excel 8.0";Persist Security Info=False')...[website$]
  SET @err5 = @@error
  
  --把數據從網站位表中導入到競價網站表中
  insert into WL_ComSite(cSiteName,cSiteUrl,cSiteVDT,spID,buyerID)
  select siteName,siteUrl,DATEADD(day,7,spEAucDT) as cSiteVDT,spID,buyerID
  from WL_SitePosition order by spID
  SET @err6 = @@error

 end

   if @err1=0 and @err2=0 and @err3=0 and @err4=0 and @err5=0 and @err6=0

 COMMIT TRAN
   else
 ROLLBACK TRAN

SET NOCOUNT OFF
GO

3、創建數據庫作業的截圖

   






注意:數據庫服務器要啓動 SQL Server代理

【注意】
             1、Excel表使用絕對路徑
              2、工作表的名稱要一致,這裏使用的是website
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章