簡體   English   中英

使用SQL Server 2008根據表中的數據以及它們是否本地存在來檢索遠程文件

[英]Retrieving remote files based on data from table and whether they exist locally using SQL Server 2008

任何人都可以告訴我執行此任務的最佳方法,我不希望為我寫的腳本(我喜歡學習),我只需要一個指針即可,這是解決問題的最佳方法,

我為目錄中的每個產品下載了名為( ProdId.xml )的xml文件。

我從SQL Server 2008表產品中獲得了產品ID的列表。 目前,將它們放入Excel並在每個文件之前放置wget語句,並提供完整路徑以及用戶文件源的用戶名和密碼。

例如

wget website/xmlfiles/prodid.xml – username – password

我會為每個文件執行此操作。

我想自動化該過程,因此每天提取所有產品ID的檢查信息,以查看文件是否已存在,然后從網站上收集該文件。

我該怎么做?

我建議您考慮編寫一個SQL Server Integration Services或SSIS包來為您執行此操作。 SSIS可用於數據提取,轉換和加載。

在線上有很多關於SSIS的教程。 這里有一些:

MS SQL提示-SQL Server集成服務(SSIS)

SSIS教程:SQL Server 2005 Integration Services教程

SSIS教程:創建一個簡單的ETL包

最后使用了這個腳本

DECLARE @Product_ID INT
DECLARE Product CURSOR
FOR SELECT Product_ID
FROM dbo.table

OPEN Product

declare @Paths varchar(128) ,
@FileName varchar(128),
@FileExtension varchar(128)

FETCH NEXT FROM Product
INTO    @Product_ID

WHILE @@FETCH_STATUS = 0
BEGIN

select  @Paths = 'C:\Data\xmls\' ,
@FileExtension = '.xml',
@FileName = @Product_ID


declare @objFSys int
declare @i int
declare @File varchar(1000)

select @File = @Paths + @FileName + @FileExtension
exec sp_OACreate 'Scripting.FileSystemObject', @objFSys out
exec sp_OAMethod @objFSys, 'FileExists', @i out, @File
if @i = 1
print 'Allready There ' + CONVERT(VARCHAR(36), @Product_ID)
else

PRINT 'Neet to get ' + CONVERT(VARCHAR(36), @Product_ID) + '.xml From Source.'

FETCH NEXT FROM Product
INTO @Product_ID

exec sp_OADestroy @objFSys 
END

CLOSE Product
DEALLOCATE Product

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM